编辑推荐 1.以C++语言写作的设计模式,帮助读者快速入门设计模式,顺利求职C++岗位 2.本书通过主人公“小码路”和“大不点”的故事,讲述了在什么情况、什么场合下用哪一种设计模式?没有应用设计模式之前代码的实现是什么样子?用了设计模式之后代码又是什么样子?设计模式带来的好处是什么?本书将给出一一解答。 3.全书涉及的设计模式,都会以一个小故事引出,代码实现部分会分步骤将故事中对应的设计模式一一展开,手把手教读者从零书学完一个完整的设计模式。 4.全书的每一个设计模式最后都会有一个知识扩展,讲解设计模式用到的语言基础,并抛出所讲模式的问题,帮助读者学习和复习C++,从而更好、更快的理解并运用设计模式。 内容推荐 本书通过浅显易懂的例子来讲解设计模式的知识:首先,介绍设计模式的概念,在什么情况、什么场合下要用哪一种设计模式;然后,通过每一种设计模式的UML类图,明确各个小故事里讲解的设计模式中的变量之间的关系,帮助读者理解代码实现的步骤;最后,讲解设计模式之间的联系和区别。 本书案例丰富,实用性强,适合有一定C++基础的读者、求职的本科生或研究生、需要学习架构和重构架构知识的程序员阅读,也可以作为大专院校相关专业师生的参考书和培训学校的教材。 目录 目 录 第 1章 理论基础\t1 1.1 类方法\t1 1.2 类间关系\t2 1.2.1 接口实现关系\t2 1.2.2 继承泛化关系\t3 1.2.3 不可分离组合关系\t4 1.2.4 可分离聚合关系\t4 1.2.5 关联关系\t5 1.2.6 依赖关系\t6 1.3 EIT造型\t7 1.3.1 EIT是什么\t7 1.3.2 程序应用\t7 1.3.3 优化设计\t8 1.4 组合设计模式\t11 1.5 总结\t14 思而不罔\t14 温故而知新\t14 第 2章 六大设计原则\t15 2.1 开闭原则—服装店打折\t15 2.1.1 多扩展、少修改\t15 2.1.2 兼容性的考量\t16 2.1.3 季节变换后的服装销售\t16 2.1.4 服装打折中的开闭原则\t19 2.1.5 小结\t23 思而不罔\t23 温故而知新\t23 2.2 里氏替换原则—企鹅不是鹅\t24 2.2.1 基类的替身\t24 2.2.2 抽象的妙处\t24 2.2.3 企鹅不是鹅\t25 2.2.4 企鹅不是鹅中的里氏替换原则\t26 2.2.5 小结\t28 思而不罔\t28 温故而知新\t28 2.3 依赖倒置原则—切换电视台\t29 2.3.1 面向接口编程\t29 2.3.2 依赖抽象而非细节\t29 2.3.3 电视台之间的轻松切换\t29 2.3.4 切换电视台中的依赖倒置原则\t31 2.3.5 小结\t33 思而不罔\t34 温故而知新\t34 2.4 单一职责原则—爸妈分工干活\t34 2.4.1 一个类一个职责\t34 2.4.2 关联性方法的聚类\t35 2.4.3 分工协作中的子女教育\t35 2.4.4 辅导作业中的单一职责原则\t36 2.4.5 小结\t39 思而不罔\t39 温故而知新\t39 2.5 接口隔离原则—细分图书管理\t39 2.5.1 独立成类\t39 2.5.2 接口去冗余\t40 2.5.3 图书管理的标准流程\t40 2.5.4 图书管理系统中的接口隔离原则\t42 2.5.5 小结\t44 思而不罔\t44 温故而知新\t44 2.6 迪米特法则—介绍人说对象\t45 2.6.1 巧用第三者\t45 2.6.2 类间少了解\t45 2.6.3 相亲还需介绍人帮助\t45 2.6.4 说媒中的迪米特法则\t47 2.6.5 小结\t48 思而不罔\t48 温故而知新\t49 2.7 总结\t49 第3章 六大创建型设计模式\t50 3.1 单例模式—只有一个班长\t50 3.1.1 全局专享\t50 3.1.2 角色扮演\t51 3.1.3 有利有弊\t51 3.1.4 只有一个班长实际问题\t52 3.1.5 用单例模式解决问题\t53 3.1.6 小结\t55 思而不罔\t55 温故而知新\t55 3.2 原型模式—证书制作\t55 3.2.1 复制的力量\t55 3.2.2 角色扮演\t56 3.2.3 有利有弊\t56 3.2.4 证书制作实际问题\t57 3.2.5 用原型模式解决问题\t58 3.2.6 小结\t60 思而不罔\t60 温故而知新\t61 3.3 工厂方法模式—成立事业部\t61 3.3.1 一对一的关系\t61 3.3.2 角色扮演\t61 3.3.3 有利有弊\t62 3.3.4 成立事业部实际问题\t63 3.3.5 用工厂方法模式解决问题\t64 3.3.6 小结\t66 思而不罔\t66 温故而知新\t66 3.4 抽象工厂模式—产品多元化\t66 3.4.1 一对多的关系\t67 3.4.2 角色扮演\t67 3.4.3 有利有弊\t68 3.4.4 产品多元化实际问题\t68 3.4.5 用抽象工厂模式解决问题\t70 3.4.6 小结\t72 思而不罔\t73 温故而知新\t73 3.5 简单工厂模式—多款式手机\t73 3.5.1 用形参去抽象\t73 3.5.2 角色扮演\t73 3.5.3 有利有弊\t74 3.5.4 多款式手机实际问题\t74 3.5.5 用简单工厂模式解决问题\t76 3.5.6 小结\t78 思而不罔\t78 温故而知新\t78 3.6 建造者模式—组装人偶玩具\t79 3.6.1 构造与表示分离\t79 3.6.2 角色扮演\t79 3.6.3 有利有弊\t80 3.6.4 组装人偶玩具实际问题\t80 3.6.5 用建造者模式解决问题\t82 3.6.6 小结\t85 思而不罔\t85 温故而知新\t85 3.7 总结\t85 第4章 七大结构型设计模式\t87 4.1 适配器模式—电源适配器\t87 4.1.1 第三方桥梁\t88 4.1.2 角色扮演\t88 4.1.3 有利有弊\t89 4.1.4 电源适配器实际问题\t89 4.1.5 用适配器模式解决问题\t91 4.1.6 小结\t92 思而不罔\t93 温故而知新\t93 4.2 代理模式—房屋中介\t93 4.2.1 中介的作用\t93 4.2.2 角色扮演\t94 4.2.3 有利有弊\t94 4.2.4 房屋中介实际问题\t95 4.2.5 用代理模式解决问题\t96 4.2.6 小结\t97 思而不罔\t97 温故而知新\t97 4.3 桥接模式—随心所欲绘图\t98 4.3.1 继承变聚合\t98 4.3.2 角色扮演\t98 4.3.3 有利有弊\t99 4.3.4 随心所欲绘图实际问题\t99 4.3.5 用桥接模式解决问题\t101 4.3.6 小结\t103 思而不罔\t103 温故而知新\t103 4.4 装饰模式—火锅加配菜\t104 4.4.1 添加装饰类\t104 4.4.2 角色扮演\t104 4.4.3 有利有弊\t106 4.4.4 火锅加配菜实际问题\t106 4.4.5 用装饰模式解决问题\t108 4.4.6 小结\t110 思而不罔\t110 温故而知新\t110 4.5 外观模式—买房手续多\t111 4.5.1 接口的二次封装\t111 4.5.2 角色扮演\t112 4.5.3 有利有弊\t112 4.5.4 买房手续多实际问题\t113 4.5.5 用外观模式解决问题\t114 4.5.6 小结\t116 思而不罔\t116 温故而知新\t117 4.6 享元模式—统计网络终端数\t117 4.6.1 创建对象池\t117 4.6.2 角色扮演\t118 4.6.3 有利有弊\t118 4.6.4 统计网络终端数实际问题\t118 4.6.5 用享元模式解决问题\t120 4.6.6 小结\t123 思而不罔\t123 温故而知新\t123 4.7 组合模式—总公司架构\t123 4.7.1 树形结构\t124 4.7.2 角色扮演\t124 4.7.3 有利有弊\t125 4.7.4 总公司架构实际问题\t126 4.7.5 用组合模式解决问题\t127 4.7.6 小结\t131 思而不罔\t131 温故而知新\t131 4.8 总结\t131 第5章 十大行为型设计模式\t133 5.1 模板方法模式—银行办业务\t134 5.1.1 流程归一化\t134 5.1.2 角色扮演\t134 5.1.3 有利有弊\t135 5.1.4 银行办业务实际问题\t135 5.1.5 用模板方法模式解决问题\t137 5.1.6 小结\t139 思而不罔\t139 温故而知新\t139 5.2 解释器模式—校园门禁卡\t139 5.2.1 语言翻译机\t139 5.2.2 角色扮演\t140 5.2.3 有利有弊\t141 5.2.4 校园门禁卡实际问题\t142 5.2.5 用解释器模式解决问题\t144 5.2.6 小结\t147 思而不罔\t147 温故而知新\t147 5.3 策略模式—旅行方式多\t147 5.3.1 多分支判断\t148 5.3.2 角色扮演\t148 5.3.3 有利有弊\t149 5.3.4 旅行方式多实际问题\t149 5.3.5 用策略模式解决问题\t151 5.3.6 小结\t153 思而不罔\t153 温故而知新\t153 5.4 命令模式—顾客点菜\t154 5.4.1 请求对象化\t154 5.4.2 角色扮演\t154 5.4.3 有利有弊\t155 5.4.4 顾客点菜实际问题\t156 5.4.5 用命令模式解决问题\t158 5.4.6 小结\t160 思而不罔\t161 温故而知新\t161 5.5 责任链模式—审批流程多\t161 5.5.1 职责串联\t161 5.5.2 角色扮演\t162 5.5.3 有利有弊\t163 5.5.4 审批流程多实际问题\t163 5.5.5 用责任链模式解决问题\t165 5.5.6 小结\t167 思而不罔\t167 温故而知新\t168 5.6 状态模式—我的一整天\t168 5.6.1 逻辑变对象\t168 5.6.2 角色扮演\t169 5.6.3 有利有弊\t170 5.6.4 我的一整天实际问题\t170 5.6.5 用状态模式解决问题\t172 5.6.6 小结\t175 思而不罔\t175 温故而知新\t175 5.7 观察者模式—“欢迎新同事”\t175 5.7.1 观察者模式运作方式— 一呼百应\t175 5.7.2 角色扮演\t176 5.7.3 有利有弊\t177 5.7.4 “欢迎新同事”问题\t178 5.7.5 用观察者模式解决问题\t180 5.7.6 小结\t182 思而不罔\t182 温故而知新\t182 5.8 中介者模式—驿站取快递\t183 5.8.1 交互的替身\t183 5.8.2 角色扮演\t184 5.8.3 有利有弊\t185 5.8.4 驿站取快递实际问题\t185 5.8.5 用中介者模式解决问题\t187 5.8.6 小结\t190 思而不罔\t190 温故而知新\t190 5.9 访问者模式—手机耗电快\t190 5.9.1 固定结构下的技巧\t191 5.9.2 角色扮演\t191 5.9.3 有利有弊\t192 5.9.4 手机耗电快实际问题\t193 5.9.5 用访问者模式解决问题\t195 5.9.6 小结\t199 思而不罔\t199 温故而知新\t199 5.10 备忘录模式—面试的公司多\t199 5.10.1 好记性不如烂笔头\t200 5.10.2 角色扮演\t200 5.10.3 有利有弊\t201 5.10.4 面试的公司多实际问题\t202 5.10.5 用备忘录模式解决问题\t204 5.10.6 小结\t207 思而不罔\t207 温故而知新\t208 5.11 总结\t208 第6章 设计模式三大综合案例\t210 6.1 封闭开发中的成果\t210 6.1.1 聊天登录系统\t210 6.1.2 系统拆解分析\t211 6.1.3 系统整合设计\t213 6.1.4 系统编码实现\t215 6.1.5 思考\t223 6.1.6 小结\t223 6.2 产品上线后的创业故事\t223 6.2.1 手机产业链\t223 6.2.2 产业链拆解\t224 6.2.3 产业链组合\t229 6.2.4 产业链编程\t231 6.2.5 思考\t241 6.2.6 小结\t241 6.3 单打独斗的艰辛\t242 6.3.1 公司起步\t242 6.3.2 流程化拆解\t242 6.3.3 流程化组合\t245 6.3.4 流程化编程\t248 6.3.5 思考\t254 6.3.6 小结\t255 6.4 总结\t255 参考文献\t\t257 书评(媒体评论) 李阳阳在我带领的多摄小组内主要负责设计小米多摄架构,运用设计模式,重构了多摄算法接口,极大提高了多摄小组的工作效率。并且,该架构已经成为业内多摄标准。李阳阳对设计模式有浓厚的兴趣和深入的研究,本书是他工作经验和技术的总结,非常适合 C++ 初学者、软件开发人员和算法工程师学习。 —— 小米集团高级软件工程师 姚海强 作者深入浅出地讲解了 C++ 编程中的设计模式。本书通过一系列精心编排的小故事和实用案例,生动地呈现了设计模式在实际项目中的应用,帮助读者更好地理解和掌握 C++ 设计模式。无论你是初学者还是有经验的开发者,本书都将为你打开设计模式的大门,让你在编程中能够更加灵活地运用这些重要的软件设计原则。 —— 中国科学院博士、《视觉惯性 SLAM:理论与源码解析》作者 程小六 《C++ 设计模式》从理论出发,结合作者多年的实际项目开发经验,用实际的案例 浅显易懂地将软件设计模式的思想和流程介绍给读者,每章巧妙安排的学后思考、 温故知新和总结环节,能引导读者更深入地理解所学知识。本书对读者求职和 工作都很有帮助。 —— 自动驾驶感知算法资深专家 王琳 |