黑马程序员---设计模式之工厂模式

来源:互联网 发布:pos机软件 编辑:程序博客网 时间:2024/06/05 08:37

------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------

最近报了黑马,开始要写博客了。因为很早之前学习过了java,再去重新学习就没多大了心情了  ,刚好最近学习设计模式,干脆就以此作为技术博客了。


注:还是菜鸟一只,对于设计模式的理解还是很肤浅,而对于使用场合及优缺点更是没有发言权了,所有这系里的博客只是作为学习日记,留个印象。


简单工厂模式

  类图


工厂类代码

public class OperationFactory {    public Operation createOperation(String oper)    {        Operation operation=null;        switch(oper)        {        case "+":            operation=new OperationAdd();            break;        case "-":            operation=new OperationSub();            break; }                return operation;    }}

优点
   简单工厂最大的优点在于工厂类中包含了必要的逻辑判断,根据客户端的选择动态的实例化相关的类,对于客户端来说,去除了具体的依赖。
缺点
由于工厂类集中了所有实例的创建逻辑,违反了高内聚责任分配原则,将全部创建逻辑集中到了一个工厂类中;它所能创建的类只能是事先考虑到的,如果需要添加新的类,则就需要改变工厂类了。
使用场景
工厂类负责创建的对象比较少;
客户只知道传入工厂类的参数,对于如何创建对象(逻辑)不关心;
由于简单工厂很容易违反高内聚责任分配原则,因此一般只在很简单的情况下应用。


工厂方法模式

  类图

工厂接口代码

public interface OperationFactory {public Operation createOperation();}
工厂实现类代码

public class AddFactory implements OperationFactory {@Overridepublic Operation createOperation() {return new OperationAdd();}}public class SubFactory implements OperationFactory {    @Override    public Operation createOperation() {        return new OperationSub();    }}。。。。
客户端调用

public class Test {public static void main(String[] args) {OperationFactory factory=new SubFactory();Operation operation = factory.createOperation();operation.getResult();}}

优点

  工厂方法模式是简单工厂模式的进一步抽象和推广。由于使用了多肽性,工厂方法模式保持了简单工厂的优点,克服了它的缺点。


缺点

   在每加一个产品之前,都要增加一个产品的工厂类,增加了额外的开发量



抽象工厂模式

  类图



优点

   便于交互产品系列,具体的工程类在一个应用中只在初始化的时候出现一次,这就使得改变一个应用的具体工厂变得简单,他只需要改变具体工厂即可使用不同的产品

     它还让具体的创建实例的过程与客户端分离,客户端通过抽象的接口操作实例,产品的具体类别也被具体工厂实习分离


缺点

   在增加新产品是时,增加和要改动的类太多




0 0
原创粉丝点击