C++软件设计思想、方法与模式

11月26日由Boolan首席软件咨询师李建忠老师主讲的 《C++软件设计思想、方法与模式》在华为上海成功举办,培训效果得到华为参训学员一致好评,活动现场互动热络,反响热烈。

企业赋能培训现场

李建忠老师对C++软件设计的精彩讲解和结合优秀案例的深度剖析,使参训学员在自身业务背景下,不断思考、练习并接受新的方法、模型和思路。

引发学员深度思考

C++软件设计思想、方法与模式

软件设计思想与原则

从面向对象谈起

为什么要面向对象设计?

面向对象设计最大的优势在于:抵御变化

底层思维:向下,如何把握机器底层从微观理解对象构造。

抽象思维:向上,如何将我们的周围世界抽象为程序代码。

软件设计通常具有固有的复杂性,了解软件设计复杂性的诱因是处理复杂性的关键。

那如何解决复杂性呢?

?分解

人们面对复杂性有一个常见的做法:即分而治之,将大问题分解为多个小问题,将复杂问题分解为多个简单问题。

?抽象

更高层次来讲,人们处理复杂性有一个通用的技术,即抽象。由于不能掌握全部的复杂对象,我们选择忽视它的非本质细节,而去处理泛化和理想化了的对象模型。

而面向对象设计的精髓就是—“抽象”

?向上:深刻把握面向对象机制所带来的抽象意义,理解如何使用这些机制来表达现实世界,掌握什么是“好的面向对象设计”

?对象通过“抽象”来管理复杂性

?数据抽象

?单一责任

?模块化

?分治管理

面向对象设计的“SOLID”五大原则:

?SRP ( Single Responsibility Principle),单一职责原则

?OCP(Open Close Principle),开放封闭原则

?LSP(Liskov Substitution Principle),里氏替换原则

?ISP(Interface Segregation Principle),接口隔离原则

?DIP(Dependence Inversion Principle), 依赖倒置原则

深入理解面向对象三大机制:

?封装,封装数据(状态)与函数(行为)

?对象的内存布局

?继承,复用父类代码实现

?子类与父类的对象模型

?私有继承、受保护继承、公有继承

?多态,运行时选择对象行为

?虚表指针完成运行时动态绑定

软件设计方法与技巧

将设计原则提升为设计经验:

?设计原则 Design Principles

Design Principles 描述与特定编程语言无关的,通用性的,适用于各种粒度的设计原则。

?设计习语 Design Idioms

Design Idioms 描述与特定编程语言相关的特定规范、技巧、惯用法。参考《C++ Core Guidelines》

?设计模式 Design Patterns

Design Patterns主要描述的是“类与相互通信的对象之间的组织关系,包括它们的角色、职责、协作方式等方面。

重构

?重构是?种对软件内部结构的改善,?的是在不改变软件的可??为的情况下,使其更易理解,修改成本更低。

?重构过程包括去除重复、简化复杂逻辑和澄清模糊的代码。

?要保证重构的安全性

?循序渐进地进?重构

?要持续进?重构

通过重构进行迭代式设计,逐步得到好的设计,是设计常态。

重构的要点:

?提?代码的可读性

?保持代码整洁

?循序渐进

架构模式 Architectural Patterns:

?架构模式描述系统中与基本结构组织关系密切的高层模式。

?架构模式通常包括子系统划分,职责,以及如何组织它们之间关系的规则。

设计模式与实践

GOF-23 模式分类

?从目的来看:

?创建型(Creational)模式:将对象的部分创建工作延迟到子类或者其他对象,从而应对需求变化为对象创建时具体类型实现引来的冲击。

?结构型(Structural)模式:通过类继承或者对象组合获得更灵活的结构,从而应对需求变化为对象的结构带来的冲击。

?行为型(Behavioral)模式:通过类继承或者对象组合来划分类与对象间的职责,从而应对需求变化为多个交互的对象带来的冲击。

?从范围来看:

?类模式处理类与子类的静态关系。

?对象模式处理对象间的动态关系。

关于Boolan

Boolan团队将根据各企业全年的培训需求,为企业量身打造培训课程。内训主题包括人工智能/机器学习、大数据、软件架构、产品经理、Web开发、C++系列、Java平台 等IT互联 技术领域。获取更多企业赋能课程信息,请扫下方二维码或点击原文链接

声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2021年10月15日
下一篇 2021年10月15日

相关推荐