工厂方法模式

2019-04-24  本文已影响0人  南小夕

一、前言

工厂方法模式是创建型设计模式之一。工厂方法模式是一种很好的模式,在我们平时开发中应用很广泛。(Ps:如果对工厂方法模式不是很了解,可以先看上一篇简单工厂 https://www.jianshu.com/p/4490d9ad0d1a,再看这一篇)

二、定义

定义一个创建对象的接口,但让实现这个接口的类来决定实例化哪个类,工厂方法让类的实例化推迟到子类中进行。

三、适用场景

1、创建对象需要大量重复的代码;
2、客户端(应用层)不依赖于产品类实例如何被创建、实现等细节;
3、一个类通过其子类来指定创建哪个对象;

四、代码实战

还是用上一篇简单工厂的例子,我们把它改造成工厂模式。

首先还是创建录制Java视频的video和python的video, 屏幕快照 2019-04-23 下午4.12.51.png 屏幕快照 2019-04-23 下午4.12.17.png 屏幕快照 2019-04-23 下午4.12.29.png 然后创建工厂,但是VideoFactory中只定义契约、规范,不定义具体产生的产品,具体产生什么都交给子类去做, 屏幕快照 2019-04-23 下午4.14.24.png 然后创建子类工厂, 屏幕快照 2019-04-23 下午4.15.09.png 屏幕快照 2019-04-23 下午4.15.17.png 测试, 屏幕快照 2019-04-23 下午4.15.40.png
主要分为四大模块,一是抽象工厂VideoFactory类,其为工厂方法模式的核心;二是具体工厂JavaVideoFactory和PythonVideoFactory类,其实现了具体的业务逻辑;三是抽象产品Video类,是工厂方法模式所创建的产品的父类;四是具体产品JavaVideo和Python类,为实现抽象产品的某个具体产品的对象。

上述的代码中我们在MainActivity中构造了一个工厂对象,并通过其生产了一个产品对象,这里我们得到的产品对象是JavaVideo的实例。
到这里可以发现,工厂方法模式是完全符合设计原则的,其降低了对象之间的耦合度,而且,工厂方法模式依赖于抽象的架构,其将实例化的任务交由子类去完成,有非常好的扩展性。

五、总结

1、优点

(1)用户只需关心所需产品对应的工厂,无须关心创建细节
(2)加入新产品符合开闭原则,提高可扩展性

2、缺点

(1)类的个数容易过多,增加复杂度
(2)增加了系统的抽象性和理解难度

上一篇 下一篇

猜你喜欢

热点阅读