设计模式之工厂模式
一.简单工厂模式
1)简单工厂模式是属于创建型模式,是工厂模式的一种。简单工厂模式是由一个工厂对象决定创建出哪一种产品类的实例。简单工厂模式是工厂模式家族中最简单实用的模式
2)简单工厂模式:定义了一个创建对象的类,由这个类来封装实例化对象的行为(代码)
3)在软件开发中,当我们会用到大量的创建某种、某类或者某批对象时,就会使用到工厂模式.
思路:思路:把创建Pizza对象从main方法到一个类中,这样我们有新的Pizza种类时,只需要修改该类就可,其它有创建到Pizza对象的代码就不需要修改了
UML类图:
二.工厂方法模式
现在如果需要跟多的工厂的话,按照简单工厂模式就需要创建多个工厂类以满足需求,可维护性、可扩展性不强:
创建一个工厂抽象类,将简单工厂模式中工厂类的实例化功能抽象成抽象方法放到该工厂抽象类中去,具体的实例化交给子类来实现:
这样,new子工厂类的时候,会去调用父工厂类的工作方法,其构造方法中会调用需要被实现的抽象方法,然后就会调到子工厂类中的已经实现的抽象方法。
UML图:
三.抽象工厂模式
定义了一个interface用于创建相关或有依赖关系的对象簇,而无需指明具体的类;将工厂抽象成两层,AbsFactory(抽象工厂) 和 具体实现的工厂子类。程序员可以根据创建对象类型使用对应的工厂子类。这样将单个的简单工厂类变成了工厂簇,更利于代码的维护和扩展。
与工厂方法模式的区别: 将原抽象类改为工厂接口,其中只有一个需要被实现的抽象方法,将具体的细节移动到一个新类中去,去new这个新类并传入子工厂类实例:
UML图
四.工厂模式小结
- 工厂模式的意义
将实例化对象的代码提取出来,放到一个类中统一管理和维护,达到和主项目的依赖关系的解耦。从而提高项
目的扩展和维护性。 - 三种工厂模式 (简单工厂模式、工厂方法模式、抽象工厂模式)
- 设计模式的依赖抽象原则
创建对象实例时,不要直接 new 类, 而是把这个 new 类的动作放在一个工厂的方法中,并返回。有的书上说,变量不要直接持有具体类的引用。不要让类继承具体类,而是继承抽象类或者是实现 interface(接口)不要覆盖基类中已经实现的方法。