设计模式 总结

八大原则

  1. 依赖倒置原则:高层次的代码(稳定)不应该依赖低层次的代码(变化)、抽象的代码不应该依赖具体的代码。
  2. 开放封闭原则:类模块应该开放扩展的,而其原先的代码尽量封闭不可改变。
  3. 单一职责原则:一个类应该仅有一个变化的原因,该变化隐含了它的职责,职责太多时会导致扩展时对代码东拉西扯,造成混乱。
  4. 替换原则:子类必须能够替换它的基类(IS-A),继承可以表达类型抽象。
  5. 接口隔离原则:接口应该小而完备,不该强迫用户使用多余的方法。
  6. 优先使用组合而不是继承:继承通常会让子类和父类的耦合度增加、组合的方式只要求组件具备良好定义的接口。
  7. 封装变化点:
  8. 针对接口编程,而不是针对实现编程。

通过重构判断采用何种模式

1.模板模式

2.策略模式

90% 遇到 if - else if - else或者 switch 的情况时,都需要考虑要不要将其转换为策略模式。
因为 if-else 的做法会导致主流程(骨架)的代码变得臃肿,容易违反开放封闭原则,每次阅读骨架代码时都需要速览与目标条件无关的其它分支,策略模式能够起到作用:减少阅读其它分支时间、当编写某个“策略”时、更能集中注意力、更易扩展且避免破坏骨架。

// A code block
enum TaxBase {
	CN_Tax,
	US_Tax,
	DE_Tax,
	FR_Tax       //更改
};
class SalesOrder{
    TaxBase tax;
public:
    double CalculateTax(){
        //...
       
        if (tax == CN_Tax){
            //CN***********
        }
        else if (tax == US_Tax){
            //US***********
        }
        else if (tax == DE_Tax){
            //DE***********
        }
		else if (tax == FR_Tax){  //更改
			//...
		}
        //....
     }
    
};

3.观察者模式

4.装饰模式

5.桥模式

对象创建模式

6.工厂方法模式

7.抽象工厂模式

8.原型模式

9.构建器模式

对象性能模式

10.单件模式

11.享元模式

接口隔离模式

12.门面模式

13.代理模式

14.适配器模式

15.中介模式

状态变化模式

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值