工厂设计模式

2019-12-28  本文已影响0人  温岭夹糕

单例设计模式:https://www.jianshu.com/p/0f36f06d4106

原型设计模式:https://www.jianshu.com/p/8301cea8c99b

关于工厂设计模式,我的理解是:

为管理多个功能相似的业务。

打个比方


1.简单工厂

先给业务定义一个标准(接口),以后所有的子业务都需要实现该标准

实现简单工厂类 实现简单工厂类的调用 整体逻辑结构

简单工厂类的逻辑结构很简单,对子业务定义结构,统一一个工厂类生成业务。

但是当我们要新增一个业务的时候,需要修改统一的工厂类。

2.工厂方法工厂类

除了给子业务定义一个接口,还要给工厂方法定义一个接口,不同的工厂产生不同的业务,这样当我们新增一个业务的时候只需要新增一个工厂即可

工厂方法工厂类

使用场景大多为,不知道要使用到哪些类的时候,把具体产品的实现交给子类。

逻辑结构

但是这种方法会造成随着业务的增长会增加越来越多的工厂类

3.抽象方法工厂类

当子业务又要拓展出子业务时,只定义一个业务接口就显得有些力不足心,就衍生除了抽象方法工厂类

业务

分别对子业务定义接口

子业务定义接口

当衣服和裤子需要成套生产时,我们可以对工厂类再细化分接口

成套生产 逻辑结构图

但是需要生产不同的套装需要的不同的工厂类,随着业务的增加,工厂类也会越来越多,因此我们借助简单工厂类对工厂定义接口那部分代码优化

利用简单工厂类优化套装生产

但是代码审核人员说不满意,随着业务的增长,switch分支只会越来越多

因此我们引入Reflection反射类来简化代码

什么是ReflectionClass?

手册上的解释

我们可以通过该反射类创建类,获取一个类的信息包括注释?

这么神奇?试一试

newInstance传入的参数将会被传入Factory类的构造函数

两次执行结果对比

利用反射类优化

结果相同

逻辑结构总结

总结:

1.简单工厂类由一个统一工厂类生产产品,对产品进行接口定义

2.工厂方法类除了对不同产品定义接口外,对不同的工厂类也定义同一个接口,不同的工厂生产不同的产品,具体生产哪个产品由子类决定。

3.抽象工厂类对业务的子业务定义接口,并由统一工厂类生产产品

上一篇 下一篇

猜你喜欢

热点阅读