简单工厂模式:

抽象类 - 实体类继承,工厂根据需求生成不同的实体类。客户端直接使用工厂类获取实体类。
image.png

策略模式:

抽象类 - 实体类继承,上下文里管理抽象类,将抽象类的实体类的相关调用封装在内部,并对外上下文的相应方法,减少抽象类/基类与使用方的耦合。这样在如果存在使用方有多个、或者一个使用方使用不同的实体类的情况下,都可以直接使用context,来满足需求。也就是将可能存在的多种的变化的使用方式封装到context 里面
image.png

策略模式 + 简单工厂模式:

客户端创建上下文,上下文根据参数,调用工厂类创建不同的实体类.客户端直接使用创建好的实体类。
image.png

单一职责原则:

一个类只做一件事,如果有多种可能会使这个类更改,那么他的职责就不单一了。比如一个类既有页面,也有逻辑。如果页面改了,这个类要改,逻辑改了,这个类也要改,这时,指责就不单一了。

开放-关闭原则:

关闭类的修改,开放类的扩展。
如果不能在一开始的时候,预知到需要将哪些公共的功能抽象出来时,在第一次需求来临,需要修改一个类的时候,就需要思考这个类是不是该把公共的抽象出来了。
比如一个计算器的类,只有加法功能,我们会写在一个类里面,需要增加减法功能时,就需要修改这个类了。这时需要思考,是不是应该抽象出来一个运算类,实现类有加法、减法。这样如果再增加乘法,不改原有的类,只需要增加一个乘法的类,就可以了。

封装变化

多用组合,少用继承原则