工厂方法模式
定义
工厂方法模式属于类的创建型模式又被称为多态工厂模式。工厂方法模式的意义在于定义一个创建产品对象的工厂接口,将实际创建工作推迟到子类中,核心工厂类不再负责产品的创建,仅负责声明具体工厂子类必须实现的接口。
这样进一步抽象画的好处是使得工厂方法模式可以使系统在不修改具体工厂角色的情况下引进新的产品。
适用场景
1)创建对象需要大量重复的代码
2)客户端(应用层)不依赖于产品类实例如何被创建、实现等细节
3)一个类通过其子类来指定创建哪个对象
优点和缺点
优点
- 用户只需要关系所需产品对应的工厂,无须关心创建细节。
- 加入新产品符合开闭原则,提高可扩展性。
缺点
- 类的个数容易过多,增加复杂度。
- 增加了系统的抽象性和理解难度。
代码实现
创建抽象产品类
我们创建一个电脑的抽象产品类,他有一个抽象方法用于启动电脑
1 | public abstract class Computer { |
创建具体产品类
接着我们创建各个品牌的电脑,他们都继承了他们的父类Computer,并实现了父类的start方法。
联想电脑
1 | public class LenovoComputer extends Computer{ |
惠普电脑
1 | public class HpComputer extends Computer{ |
华硕电脑
1 | public class AsusComputer extends Computer{ |
创建一个工厂抽象类,具体创建产品的代码由工厂抽象类的子类去实现
1 | public abstract class ComputerFactory { |
创建联想电脑的工厂实现
1 | public class LenovoComputerFactory extends ComputerFactory{ |
创建惠普电脑的工厂实现
1 | public class HpComputerFactory extends ComputerFactory{ |
创建华硕电脑的工厂实现
1 | public class AsusComputerFactory extends ComputerFactory{ |
客户端调用
1 | public class Test { |