C++设计模式——⼋⼤设计原则
引⾔
在学习的过程中,我通常会分为三步,吸收消化、表达出来、教会他⼈。如果能达到通俗易懂的⽅式教会他⼈,那必定对该知识点⼗分熟悉。所以我也想尝试通过将设计模式给写出来、表达出来、使⾃⼰对设计模式有更加深刻的⼀个理解,同时也给别⼈参考学习。如果有不正确的地⽅,欢迎纠正。
概述
设计模式体现的是⼀种思想,理解和掌握了设计模式,并不是说记住了 23 种设计场景和解决策略(实际上这也是很重要的⼀笔财富),实际上学习设计模式应该学习设计模式的思想和设计原则,等这种思想融⼊到了你的思想中后,你就会不⾃觉地使⽤这种思想去设计和开发,这才是最重要的。
核⼼思想就是要深刻的理解稳定和变化,设计模式主要就是围绕这两点,⼤部分的设计模式都有它的稳定点和变化点,在这两点中寻⼀个隔离点来隔离变化。达到代码复⽤的⼀个效果。
⼋⼤设计原则
1.依赖倒置原则
⾼层模块(稳定)不应该依赖于低层模块(变化),⼆者都应该依赖于抽象(稳定)。
抽象(稳定)不应该依赖于变化,实现细节应该依赖于抽象(稳定)。
2.开放封闭原则
对扩展开放,对更改封闭。
类模块应该是可扩展的,但是不可修改
3.单⼀职责原则
⼀个类应该仅有⼀个引起它变化的原因。
变化的⽅向隐含着类的责任。
4.Liskov 替换原则
⼦类必须能够替换它们的基类。
继承表达类型抽象。
5.接⼝隔离原则
单例模式的几种实现方式不应该强迫客户程序依赖它们不⽤的⽅法。
接⼝应该⼩⽽完备。
6.对象组合优于类继承
类继承通常为“⽩箱复⽤”,对象组合通常为“⿊箱复⽤”
继承在某种程度上破坏了封装性,⼦类⽗类耦合度⾼。
⽽对象组合则只要求被组合的对象具有良好定义的接⼝,耦合度低
7.封装变化点
使⽤封装来创建对象之间的分界层,让设计者可以在分界的⼀侧进⾏修改,⽽不会对另⼀侧产⽣不良的影响,从⽽实现层次间的松耦合。
8.⾯向接⼝编程
不将变量类型声明为某个特定的具体类,⽽是声明为某个接⼝。
客户程序⽆需获知对象的具体类型,只需要知道对象所具有的接⼝。
减少系统中各部分的依赖关系,从⽽实现“⾼内聚、松耦合”的类型设计⽅案。
常⽤重构的技法
静态->动态
早绑定->晚绑定
继承->组合
编译时依赖->运⾏时依赖
紧耦合->松耦合
后⾯学习设计模式的时候会发现,⼤部分设计模式都是围绕这些⽅法进⾏设计,只要理解了设计模式的思想、设计原则、重构的⽅式,甚⾄可以忘掉设计模式固定的结构,设计出⾃⼰的模式。
模式分类
根据GOF的模式分类可分为以下⼏种
创建型模式(5种):
⼯⼚⽅法模式、抽象⼯⼚模式、单例模式、建造者模式、原型模式。
结构型模式(7种):
适配器模式、装饰器模式、代理模式、外观模式、桥接模式、组合模式、享元模式。
⾏为型模式(11种):
策略模式、模板⽅法模式、观察者模式、迭代⼦模式、责任链模式、命令模式、备忘录模式、状态模式、访问者模式、中介者模式、解释器模式。
因为设计模式这个概念提出已经过了许多年了,有些设计模式使⽤的⽅法已经过时,甚⾄已经不怎么使⽤了,但是设计模式的思想还在。所以学习设计模式最重要的是学习它的思想。
后续慢慢会把其他的设计模式给补上…
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论