简单工厂

一、前言

在学习工厂模式之前,我们先来看一下简单工厂,简单工厂是创建型,但不属于GOF23种设计模式。

二、定义

由一个工厂对象决定创建出哪一种产品类的实例。

三、适用场景

工厂类负责创建的对象比较少,并且客户端(应用层)只知道传入工厂类的参数,对于如何创建对象(逻辑)不关心。

四、代码实战

假如要录制课程视频,有Java视频、python视频等。

首先先创建一个抽象的Video方法,
简单工厂_第1张图片
屏幕快照 2019-04-23 下午3.35.41.png
然后再创建录制java视频的类和录制python视频的类,
简单工厂_第2张图片
屏幕快照 2019-04-23 下午3.37.29.png

简单工厂_第3张图片
屏幕快照 2019-04-23 下午3.37.37.png

然后再创建录制视频的工厂,
简单工厂_第4张图片
屏幕快照 2019-04-23 下午3.39.09.png
最后调用,
简单工厂_第5张图片
屏幕快照 2019-04-23 下午3.39.26.png

这几个角色都很简单,主要有,一具体工厂VideoFsctory类,其实现了具体的业务逻辑,根据传进来的参数type,实现不同的业务;二抽象产品Video类,是所创建的产品的父类;三具体产品JavaVideo和PythonVideo类,为实现抽象产品的某个具体产品的对象。
上述代码中我们在MainActivity中构造了一个工厂对象,传入“java”参数,并通过其生产了一个产品对象,这里我们得到的产品对象是JavaVideo的实例。这种方式需要哪一个产品就生产哪一个,也可以利用反射的方式更简洁地来生产具体产品对象,这里就不贴代码了。

五、总结

1、优点

只需要传入一个正确的参数,就可以获取你所需要的对象,而无须知道其创建细节。

2、缺点

工厂类的职责相对过重,增加新的产品需要修改工厂类的判断逻辑,违背开闭原则。

你可能感兴趣的:(简单工厂)