超级工厂

GOF23-工厂模式

让人想犯罪 __ 提交于 2019-11-27 14:05:31
1.什么是工厂模式 就是实现创建者与调用者分离,工厂模式的核心(灵魂)其实就是: 分工。 2.工厂模式有哪些 简单工场模式(静态工厂) 简单工厂模式也叫静态工厂模式,就是工厂类一般使用静态方法,通过接受的参数的不同来创建不同的对象并返回。其缺点是对新增的业务类无能为力,必须要修改代码来完成扩展(不满足OCP原则)。 我们先来看下没有工程类的情况 测试类Main方法及测试结果: 我们可以看出创建对象要直接与Audi、BMW类直接打打交道。 我们再来看使用简单工厂类 可以看出,测试类并没有直接跟Audi、BMW类“直接打交道”,而是通过CarFactory来达到目的,可以理解创建对象的活已经交给CarFactory来做,不再由测试类直接创建(这也就是所谓的控制反转)。 工厂方法模式 创建工厂类接口,通过新增业务类,来满足新功能(满足OCP原则),缺点:结构变得更加复杂,代码更加复杂,理论上工厂方法更优,但实际我们常用简单工厂模式。 我们需要创建一个工厂接口,及对应工厂实现类。 测试类及结果 可以看出,我们是通过新增产品工厂类来实现产品对象的创建,试下如果要新增一个保时捷对象,我们此时需要怎么做?其实我们只需要新增一个保时捷的工厂类(实现CarFactory)即可。与简单工厂模式相比较:工厂方法模式结构更复杂(需要多个产品类),代码上也相对复杂,管理难度大(维护起来麻烦)。 抽象工厂模式