(1)代码无错就是优?——简单工厂模式

《大话设计模式》

前一段时间读过一阵这本书,但是那是还没有什么面向对象的概念,而且对于设计模式什么的都一窍不通。。。现在感觉懂一点了,所以想写一点东西,和大家一起分享一下我的感受!

以前感觉代码只要实现了自己想要达到的功能就ok了,哪还管什么复用性,耦合性啊,可是开发时间越久就越感觉设计模式是如此的重要,尤其现在越来越多的多人开发项目,要是设计模式用好了,可是少些很多的代码,而且可以让 复制粘贴 消失在我们的代码里!!!

从今天开始我尽量每两天读一章《大话》,然后写一篇博文与大家分享,法定节假日除外。。。

代码的话我就根据《大话》然后自己写java的伪代码,在最后会用一个自己在现实中碰到的问题来解释用处。

封装&多态&继承

这是面向对象的三大特性,通过这三者,可以把程序的藕合度降低,增加程序的复用性,而且容易修改和扩展!

就已书上计算器的代码为例

public class Operation
{
//存放属性,及用于计算的两个数get,set方法和获得答案的方法(被重写的方法)  
}

public class AddOper extends Operation
{
//重写获得答案的方法——做两个数的加法运算
}

public class SubOper extends Operation
{
//重写获得答案的方法——做两个数的减法运算
}

public class MulOper extends Operation
{
//重写获得答案的方法——做两个数的乘法运算
}

public class DivOper extends Operation
{
//重写获得答案的方法——做两个数的除法运算
}

这样子写完后想增加方法就很简单了,只需要增加一个类去继承Operation类然后重写计算的方法就可以了,而且这几个类 都是可以重复调用的,在控制台程序,界面程序,手机程序中都可以

简单工厂模式

感觉简单工厂模式多用于 解决对象的创建 问题。比如你写了一些类,但是到底创建哪一个类?实例化对象的时候会不会因为创建太多了弄混?这个时候就应该考虑用一个 单独的类来做这个创建实例的过程(摘抄书上) 这就是工厂!

public class OperFactory
{
  public static Operation createOper (String opreate)
{
// 通过传入的符号判断调用哪一个方法最后返回当前需要调用的对象
switch(opreate)
{
case "+":
      return new AddOperation();//加法对象
case "-":
case "*":
case "/":
}
}
}

由于这几个操作类都是继承于父类Operation,所以在使用时只需要用一个Opreation去接收就可以了

  
Operation oper = OperFactory.createOper("+");  
  

这样这个oper就是加法类了,如果需要乘法,除法,减法,只需要往工厂对象中传参数就可以了

举例说明

在开发过程中会碰到很多需要用到工厂,例如在网络访问中,最近就接了一个这样的项目,需要去访问服务器获取数据,我觉得用工厂模式会好很多,网络访问属性是差不多的,差别只在于访问的地址和调用的方法有一点点区别,所以就可以抽一个父类出来,如果增加一个需要访问的页面,那么增加一个类,再增加工厂的选项就可以了,这样增加或者修改当前类,对于别的类就不会有影响!

public class Net
{
   URL;
   doURL();
}

public class Baidu extends Net
{
   doURL()
{
   打开贴吧!
}
}

public class Google extends Net
{
   doURL()
{
    打开Google地图!
}
}

。。。。

public class NetFac
{
   public static createNet(标签)
{
    根据标签判断生成哪一个对象
}
}

也许大家现在看,可能觉得代码很冗余,感觉没多大的好处,但是很简单的一个例子,你现在去调用Net,那么你只需要知道传一个参数给工厂类就够了,完全不需要知道有哪一些类,这在多人开发的时候有很大的好处,因为这样写,两人互不影响,你去实现你的网页类,我只管调用工厂类就可以了,这个例子只是我浅显的理解,它的好处真的需要大家自己再编码中才能体会到!!!

总结

还是比较推荐大家去看一下《大话》这本书,感觉这本书说的内容都比较浅显,对于设计模式的解释也比我好和专业许多,我写这个博文的意义只在于增强自己对于设计模式的理解,同时举个例子可以供大家参考一下,设计模式再别的地方的用途!

文章导航