19 | 设计模式(上):C++与设计模式有啥关系?
该思维导图由 AI 生成,仅供参考
为什么要有设计模式?
- 深入了解
- 翻译
- 解释
- 总结
设计模式与C++的关系是本文的重点,强调了设计模式在指导软件开发中的重要性。文章提到了经典的《设计模式》一书介绍的23个模式,分为创建型模式、结构型模式和行为模式,并强调了理解模式的内核和思考模式背后的设计意图和问题解决思路的重要性。此外,文章还介绍了SOLID设计原则,包括单一职责、开闭、里氏替换、接口隔离和依赖反转原则,以及DRY和KISS原则。这些原则提炼出了软件设计中最本质、最基本的东西,对于C++程序员来说具有重要指导意义。总的来说,本文强调了设计模式对于C++程序员的重要性,以及学习和理解设计模式的必要性,为读者提供了对设计模式与C++关系的深入理解和应用的指导。
《罗剑锋的 C++ 实战笔记》,新⼈⾸单¥59
全部留言(16)
- 最新
- 精选
- eletarior编程语言只是外家功夫,练得再好也像在使蛮力,设计模式才是内功心法,算是可以让编程能力从coding到programming的良方;但是用好设计模式真的不容易,很多人告诉我用的最熟的设计模式是单例模式,这让我哭笑不得,并不是看不上单例,实在是因为单例模式并不能很好的体验设计模式的精髓。个人理解的设计模式是能脱离了代码实际,向更高维度的项目工程化进阶的利器,让我们可以更好的组织和维护代码,迭代需求。但是在国内总觉得大环境比较缺失。 和设计对应的是过度设计,这个老师也有提到了kiss 和 dry原则。另外我想补充一下YAGNI(YOU AREN'T GONNA NEED IT)原则,这虽然是极限开发里的原则,但是设计上也是适用的,不要设计或者编写现在还没有用上的代码或者功能,你可能永远用不上它,这对习惯了yp(复制 粘贴)的程序员来说是个噩梦,因为他们可能连注释都会贴上去交差,遑论“多余”的代码了。 最后很感叹老师的行文取舍,没有去大书特书具体的设计模式,而是重点强调那几个原则,具体的设计模式必然是遵循这些原则的。把具体的设计模式区分的太好,也容易陷入强行搭架子的误区,只有真正理解了设计的原则,能让你放下模式化的执念,回归设计的本质,就像是太极一样,形散而意不散。
作者回复: 说的非常好,里面的观点我都深有同感。 学编程,必须要学设计模式,领会它的内在思想,才能提升自己的编程功力,才能往上走。
2020-06-18231 - 董尚斌为啥c++少用继承多用泛型?这个不是很理解
作者回复: 可以参考一下第5讲,继承用多了会导致庞大复杂的类体系,不灵活,难以维护。 C++支持多范式,使用泛型可以减少继承的使用,复用代码更加简单,是松耦合。 这个还需要在实践中多体会,当然这个也不是绝对的,在C++里怎么用都可以,这只是我的个人推荐。
2020-07-015 - Confidant.设计模式感觉非常的玄,第一次觉得自己稍微理解了一些设计模式的皮毛的时候,是对编译链接的内容有了一些体会,发现使用设计模式,可以在编译代码的时候,只编译增量的部分,从而达到修改原来功能的效果,大概体会到设计模式中对于应对变化的一些实际效果,不过实际写代码的过程中,倒是还没有到能随时把设计模式或者这些设计思想应用到自己的代码中的功底。
作者回复: 设计模式描述的是对象之间的关系,可能画出uml图来能够更好地帮助理解。 可以在写代码的时候多想想,如果需求、环境发生了变化,我们的代码能否不改或者少改就能适应变化,这就是设计模式发挥作用的地方。
2020-06-185 - EncodedStar设计模式是程序员的内功,学会设计模式并在实战中用到,会让你的程序变的很灵活,有种未雨绸缪的感觉。 设计模式都是前人实战留下的经典,好比三十六计一样,智者才能巧用啊。
作者回复: 设计模式就要多用、多思考,必须在实践中才能学到,看书看资料还是比较难领会其中的精髓的。 但有书能够让你少走弯路,快速找到好的设计,避免摸索的成本。
2020-06-183 - Weining Cao老师设计模式总结得很好。只是有一点我觉得有点疑惑:用宏代替字面量 真的是一个好的实践吗? 另外我理解宏定义能够减少代码量,但它也带来很不好的问题是它基本没法调试。 不知道老师有没有推荐的方法或者工具能够帮助调试C++的宏或者自动展开C++的宏变成清晰易于理解的源码?
作者回复: 用宏代替字面量只是C++里的一种用法,不是特别提倡,但用起来也不错,这个完全看个人或者团队是否能够达成一致。 比如说,用C和C++混合编程,有的接口会导出成C的形式,那么用宏就很合理了。 关于宏带来的问题和它的恶名也都是众所皆知的了,我也是推荐尽量少用宏,用来定义常量还可以,要是写复杂的宏替换、宏函数就不是特别好了,会很影响可读性。
2020-06-183 - 九三设计模式是作用在 编程范式如 函数式 面向对象 面向过程等这些范式上吗
作者回复: 严格来说,设计模式是用于面向对象的,但面向过程也可以利用抽象和封装模拟面向对象,所以设计模式也能够用在面向过程。 而函数式编程与面向对象的差异就比较大了,所以不能应用大多数模式。
2020-06-183 - 木鱼SRP: 保持功能单一,代码易写,易测 OCP:建议使用组合的方式来支持扩展,而不是继承(能组合就组合) LSP:子类需要拥有父类所有特性 ISP: 依赖接口而非实现 DIP: don't call me, i will call you(IOC是dip的一种实现), 最终强调的其实是对象间的依赖关系调整, 从原有的直接关联, 变为中间依赖, 进而方便替换
作者回复: great
2021-10-172 - 黄骏设计模式,在考高级架构师时有涉及,后面的工作中也遇到一些,比如,单例,访问者,观察者等,设计模式有点类似写作文,比如,议论文的三段法等。确实能避免很多问题
作者回复: 设计模式就是开发软件的经典“套路”,按照这个“套路”来搭建系统,就能够得到良好的设计。 但“套路”用得多了,也会渐渐地发现不足,就会想突破“套路”。
2020-06-181 - 甘康艺设计模式不仅仅适用于计算机编程,感觉这门课程的设计起码用到了“DRY”和“KISS”
作者回复: thanks a lot。
2022-08-31归属地:北京 - 木鱼solid
作者回复: great
2021-10-17