单例设计模式:https://www.jianshu.com/p/0f36f06d4106
原型设计模式:https://www.jianshu.com/p/8301cea8c99b
关于工厂设计模式,我的理解是:
为管理多个功能相似的业务。

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



简单工厂类的逻辑结构很简单,对子业务定义结构,统一一个工厂类生成业务。
但是当我们要新增一个业务的时候,需要修改统一的工厂类。
2.工厂方法工厂类
除了给子业务定义一个接口,还要给工厂方法定义一个接口,不同的工厂产生不同的业务,这样当我们新增一个业务的时候只需要新增一个工厂即可

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

但是这种方法会造成随着业务的增长会增加越来越多的工厂类
3.抽象方法工厂类
当子业务又要拓展出子业务时,只定义一个业务接口就显得有些力不足心,就衍生除了抽象方法工厂类

分别对子业务定义接口

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




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

但是代码审核人员说不满意,随着业务的增长,switch分支只会越来越多
因此我们引入Reflection反射类来简化代码
什么是ReflectionClass?


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


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

利用反射类优化


逻辑结构总结

总结:
1.简单工厂类由一个统一工厂类生产产品,对产品进行接口定义
2.工厂方法类除了对不同产品定义接口外,对不同的工厂类也定义同一个接口,不同的工厂生产不同的产品,具体生产哪个产品由子类决定。
3.抽象工厂类对业务的子业务定义接口,并由统一工厂类生产产品
网友评论