一、简单工厂模式:
1.原理:
普通类作为工厂类。
2.特点:
1.1 对用户而言------很不方便------用户需要指定所需产品的种类。
1.2 耦合度高------公共的逻辑和私有的逻辑都耦合在一个工厂类中实现。
1.3 可扩展性差------增加种类时,需要更改公用的工厂类中的逻辑。
1.4 冗余代码少------不同种类公共的逻辑都可以在工厂类中公用。
3.适用场景:
工厂业务逻辑简单且稳定的场景。
二、工厂方法模式:
1.原理:
实现了工厂接口的普通类作为工厂类。
2.特点:
1.1 对用户而言------在一定程度上方便了用户(用户只需要选择所需的抽象工厂类)。
1.2 耦合度低------通过接口的不同实现类降低了耦合度,但是。
1.3 可扩展性高------增加种类时,只需要增加工厂类就可以了。
1.4 冗余代码较多------无法将公共的逻辑抽象出来(因为接口中不能写逻辑)。
3.适用场景:
工厂业务逻辑复杂且各种类公共的工厂业务逻辑少。
三、抽象工厂模式:
1.原理:
继承自抽象工厂类的普通类作为工厂类。
2.特点:
1.1 对用户而言------很大程度上方便了用户(用户只需要选择所需的产品)。
1.2 耦合度低------通过抽象类的不同子类降低了耦合度。
1.3 可扩展性高------增加种类时,只需要增加工厂类就可以了。
1.4 荣域代码少------可以将公共的逻辑抽象到抽象工厂类中。
3.适用场景:
工厂业务逻辑复杂,且各种类公共的业务逻辑较多。
附上手写工厂模式的demo地址:
https://github.com/18394093929/DesignPattenDemos.git