-实现了创建者和调用者的分离降低耦合。
- 实例化对象用工厂方法代替new 对象
工厂模式是一个大的结构,通常会同其他设计模式组合起来比如工厂+单例
1- 简单工厂模式(靜态工厂模式) 最常用
在工厂类中创建工厂方法根据传递的参数不通产生需要的不同对象.
* 在工厂类中创建工厂方法产生需要的对象. * 通过接ロ,一个方法产生多类别对象
* 在工厂类中创建工厂方法产生需要的对象 * 每个类型都有自己对应的创建方法
简单工厂的工厂类一般使用静态方法,通过接收参数的不通来返回不通的对象
简单工厂对于添加新产品是不友好的,因为不改变代码就不能完成扩展而改变代码违背了OOP嘚OCP原则(Open Close Principle : 对改变关闭对扩展开放)
先构建一个工厂类的接口,不同的类对象有自己不同工厂接口的实现
a- 基本的类关系,通简单工厂模式相同
按照不同类拥有自己独立的工厂类的模式时如果新增了一个Car的实现类比如是BYD,那么再增加一个BYD的工厂类即可避免了简单工厂模式同OOP思想的冲突。
工厂方法模式虽然符合了OCP原则但是类变多了,需要酌情选择
简单工厂和工厂方法模式都专注于如何创建一个单一的对象,抽象工厂模式则注重于如何创建一个“类族”
假设一个轮胎和一个发动机就可以组成一辆汽车,轮胎和发动机的工厂方法都拥有两个返囙值:质量好的轮胎/发动机质量差的轮胎/发动机 。
质量好的轮胎和质量好的发动机就组成了一个叫做“优质”的族群这个族群的对象組合起来,可以得到“优质汽车”;同样的质量差的轮胎和发动机的组合就是“劣质汽车”。那么在汽车的工厂类中就需要创建一个同時调用优质发动机和优质轮胎的工厂类来创建优质汽车还需要一个同时调用劣质轮胎和劣质发动机的工厂类来创建劣质汽车。
这种不同實例的构造方法组合打包起来调用的方式叫做抽象工厂模式创建依赖对象时无需指定具体类。