工厂模式 :有工厂方法和抽象工厂两种常见的模式,属于创建类设计模式。用于封装对象创建的过程,我们不用知道对象是如果创建的,这样具有很好的扩展性和解耦效果。
工厂方法模式
u=2485914114,2549089854&fm=26&gp=0.jpg类图比较简单 代码就没写了 大概过程是
首页有个 product产品类(接口或者是抽象类) 然后产品类的实现类 ConcreteProduct
有个工厂类的Creator 实现类ConcreteCreator
而在ConcreteCreator里就实现了factoryMethod方法 在这个方法里创建产品的实现类
假如产品的实现类有很多 就可以给factoryMethod加一个入参来区分需要创建哪一个产品实现类
但其实我们在开放中基本不会这么写 而是直接创建一个工厂类 用static静态方法去直接创建产品类
工厂方法之前创建的是 product1(汽车) 但突然需求增加了 product2(房子),而我们最简单的做法是 直接在工厂类里加一个创建product2的方法或者修改Creator类 但这种方式是不符合设计模式的。。为了解决这种多产品类的情况就参数了抽象工厂
抽象工厂方法
timg (1).jpg抽象工厂的核心是,把不同产品类的product抽离出公共的方法,创建一个抽象的产品类和一个抽象的工厂类,
当product种类增加时 也相应的增加 对象的AbstractFactory实现类 AbstractProduct实现类
比如说现在加了一个product2
那就创建
AbstractFactory2实现类 AbstractProduct2实现类
为了应对改变不断增加实现类,只是为了不改变原有的结构和原有的接口(抽象类)
网友评论