第一章 简单工厂
面向对象
通过封装、继承、多态把程序的耦合降低。
使用设计模式使得程序更加灵活,容易修改,易于复用。
简单工厂实现方法
工厂类中定义了所有产品的种类。
只需要把产品的类型输入,并提供产品素材,调用生产方法就可以获得目标结果。
添加新的产品类型的时候,只需新创建产品类,并在工厂中配置即可。不需要修改原先的代码。
String type = "type_name";
Factory.create(type);
Factory.resource = raw_material;
var result = Factory.getResult();
优点:
- 子产品之间不存在耦合关系,便于添加产品。
第二章 策略模式
定义算法家族,分别封装,相互可以替换。替换算法不会影响使用算法的客户。
上下文类中定义了一个策略接口,定义了上下文接口(内部调用策略接口。会根据传入策略的实现类,调用子类实现的具体策略方法)。
上下文生成的时候需要实例化策略接口。
Context context = new Context(new Strategy());
var result = context.getResult(raw_material);
策略模式与简单工厂联用
往上下文的实现类中传入策略类型名称,实现对应策略的选择(工厂模式的体现)。
String type = "type_name";
Context context = new Context(type);
var result = context.getResult(raw_material);
第三章 单一职责
就一个类而言,应该仅有一个引起它变化的原因。
一个类承担的职责过多,等于把这些职责都耦合在一起,一个职责的变化可能会削弱或者抑制这个类完成其他职责的能力。
第四章 开闭原则
对于扩展是***开放*** 的,对更改是***封闭***的。
从而应对需求的变更却又保持相对稳定,从而便于系统迭代升级。
- 在设计需求的时候需要尽可能考虑到所有变化
- 无法封闭的变化,需要抽象隔离,从而避免修改
使用以上的方法,面对需求的修改通过增加新的代码,而不是改变现有的代码。
但是要避免对每一个部分都刻意进行抽象,不必要的抽象都是冗余浪费。