工厂方法模式
2019-04-24 本文已影响0人
南小夕
一、前言
工厂方法模式是创建型设计模式之一。工厂方法模式是一种很好的模式,在我们平时开发中应用很广泛。(Ps:如果对工厂方法模式不是很了解,可以先看上一篇简单工厂 https://www.jianshu.com/p/4490d9ad0d1a,再看这一篇)
二、定义
定义一个创建对象的接口,但让实现这个接口的类来决定实例化哪个类,工厂方法让类的实例化推迟到子类中进行。
三、适用场景
1、创建对象需要大量重复的代码;
2、客户端(应用层)不依赖于产品类实例如何被创建、实现等细节;
3、一个类通过其子类来指定创建哪个对象;
四、代码实战
还是用上一篇简单工厂的例子,我们把它改造成工厂模式。
主要分为四大模块,一是抽象工厂VideoFactory类,其为工厂方法模式的核心;二是具体工厂JavaVideoFactory和PythonVideoFactory类,其实现了具体的业务逻辑;三是抽象产品Video类,是工厂方法模式所创建的产品的父类;四是具体产品JavaVideo和Python类,为实现抽象产品的某个具体产品的对象。
上述的代码中我们在MainActivity中构造了一个工厂对象,并通过其生产了一个产品对象,这里我们得到的产品对象是JavaVideo的实例。
到这里可以发现,工厂方法模式是完全符合设计原则的,其降低了对象之间的耦合度,而且,工厂方法模式依赖于抽象的架构,其将实例化的任务交由子类去完成,有非常好的扩展性。
五、总结
1、优点
(1)用户只需关心所需产品对应的工厂,无须关心创建细节
(2)加入新产品符合开闭原则,提高可扩展性
2、缺点
(1)类的个数容易过多,增加复杂度
(2)增加了系统的抽象性和理解难度