一、商场促销——策略模式
正常收费、满减和打折都是继承了现金收费抽象类,在CashContext类中实例化了正常收费、满减和打折三个类,在客户端调用CashContext一个类,便实现了商场促销活动的功能。
策略模式是用来封装的,那在该例子中,他封装了正常收费、满减和打折三个类。
策略模式比简单工厂模式有什么优点?
1、减少了各种算法类与使用算法类之间的耦合。
比如简单工厂模式在客户端要认识两个类CashSuper和CashFactory,而策略模式与简单工厂结合的用法,客户端只需要认识一个类CashContext。
2、继承有助于析取出这些算法中的公共功能。
比如在Context类中获得计算费用的结果GetResult()。
二、单一职责原则
定义:就一个类而言,应该仅有一个引起它变化的原因。
如果一个类承担的职责过多,就等于把这些啧啧耦合在一起,一个职责的变化可能会削弱或者抑制这个类完成其他职责的能力。
三、开放-封闭原则
定义:是说软件实体(类、模块、函数等等)应该可以扩展,但是不可修改。
对于扩展是开放的,对于更改是封闭的。
四、依赖倒转原则
a. 高层模块不应该依赖低层模块。两个都应该依赖抽象;
b. 抽象不应该依赖细节,细节应该依赖抽象。
五、里氏代换原则
子类型必须能够替换掉它们的父类型。
六、小菜扮靓记——装饰模式
装饰模式:动态地给一个对象添加一些额外的职责,就增加功能来说,装饰模式比生成子类更为灵活。
优点:把类中的装饰功能从类中搬移去除,这样可以简化原有的类。