在程序设计中,尤其是面向对象编程时,就会涉及到设计模式思想,使用设计模式会令程序更容易扩展,更易于理解,模块功能之间更独立等等好处
设计模式属于抽象思维,抽象一些业务需求
抽象原则是 封装稳定点,如果没有稳定点那么就无法使用设计原则
我们必须对当前代码业务非常熟悉,那些是稳定的,那些不是稳定的,对稳定的进行抽象
如果为了设计模式而设计模式,那还是不推荐的
对设计模式的理解更多需要掌握设计原则,而不是设计模式
模式设计原则总结如下:
- 依赖倒置原则
高层模块不应该依赖低层模块,二者都应该依赖抽象;
抽象不应该依赖具体实现,具体实现应该依赖于抽象;
- 开放封闭原则
一个类应该对扩展开放,对修改关闭
- 面向接口编程
不将变量类型声明为某个特定的具体类,而是声明为某个接口
客户程序无需获知对象的具体类型,只需要知道对象所具有的接口
减少系统中各部分的依赖关系,从而实现“高内聚,松耦合”的类型设计方案
- 封装变化点
将稳定点和变化点分离,扩展修改变化点;让稳定点与比变化点的实现层次分离
- 单一职责原则
一个类应该仅有一个引起它变化的原因
- 里式替换原则
子类必须能够替换掉它的父类型;主要出现在子类覆盖父类实现,原来使用父类型的程序可能
出现错误;覆盖了父类方法却无法实现父类方法的职责
- 接口隔离原则:
不应该强迫客户依赖于它们不用的方法;
一般用于处理一个类拥有比较多的接口,而这些接口设计到很多职责;
- 对象组合优于类继承
继承耦合度高,组合耦合度低
在c++程序设计中设计模式都逃不过 组合,继承,多态 模型
组合是组合抽象基类;
继承采用的虚函数目的实现多态;
多态可以实现晚绑定,运行时进行加载
多态的本质是函数指针,运行时加载,所以c语言程序中(redis,nginx)也是可以实现多态的,
也是可以多态能带来的晚绑定的
实际主要设计模式 观察者模式,策略模式,责任链模式,装饰器模式,单例模式,工厂方法模式,
抽象工厂模式,适配器模式,代理模式等等,还有很多其它模式,后续进行补充