设计模式
文章平均质量分 69
长风Qiu
A Linux C++ Programmer.
展开
-
第一章 设计模式入门之策略模式【C++11版】
什么是设计模式?我们写软件追求的一个终极目标就是“高内聚,低耦合”。设计模式就是一组实现这个目标的最佳实践。软件开发过程的一大特点是**变化**,原创 2017-07-16 18:55:40 · 436 阅读 · 0 评论 -
第二章 观察者模式
定义观察者模式定义了对象之间一对多依赖,这样一来,当一个对象改变状态时,它的所有依赖者都会收到通知并自动更新。设计原则为了交互对象之间的松耦合设计而努力。松耦合的设计之所以能让我们建立有弹性的OO系统,能够应付变化,是因为对象之间的互相依赖降到了最低。代码实现需求有一个天气采集器,能够采集温度、湿度和气压,实现一个主题系统,该系统能够接受多个app的订阅,在采集器信息改变时,系统会获取到新的信息,并原创 2017-07-16 22:31:31 · 510 阅读 · 1 评论 -
UML关系总结
在UML中,事物间的关系按照is a, has a和use a三个层级可以分为六种关系。分别是泛化:generalization、实现:realization、组合:composition、聚合:aggregation、关联:association以及依赖:dependency。1.泛化:generalization泛化是一种**is a**关系,表示一般到特殊的关系。比如“animal”...原创 2018-05-29 20:30:39 · 701 阅读 · 0 评论 -
设计模式学习笔记开篇
最近有一个想法:想要系统、灵活地学习设计模式,将其内化到自己的专业技能之中,达到凭借直觉即可应用的地步。动机从毕业到现在工作已经快两年的时间了,回望过去,感觉技术上毫无积累,这并不是一个我喜欢的状态,反而让自己内心有些慌。为了职业生涯的长远打算,遂决定深入学习一些专业技能,先从《设计模式》开始。因为设计模式上可指导架构,中可夯实设计,下可驾驭编码,是一种能够统摄全局的心法,掌握它的收益性还是...原创 2019-03-31 11:08:38 · 189 阅读 · 0 评论 -
01_strage_pattern_策略模式
背景你需要中途接手开发一个模拟鸭子的游戏,游戏中有各种鸭子,它们有着不同的外貌,会游泳swim,会叫quack,后面可能会添加其他行为,比如飞行fly。你的上一任开发已经离职,他对此系统采用了标准的OO技术,设计了一个鸭子超类,并让各种鸭子继承此超类。问题代码重复问题。各种鸭子叫的方式不尽相同,如果每种鸭子都实现一份swim方法的话会出现大量重复代码。扩展性问题。如果给父类添加fl...原创 2019-04-07 16:11:49 · 223 阅读 · 0 评论 -
02_observer_pattern_订阅者模式
背景设计一个天气状态服务器,实时监测温度、湿度和气压,并将最新状态同步给订阅者。旧设计方案:将每个订阅者的更新代码写死到服务端代码里。问题高耦合,服务端代码需要知道订阅者的实现违反了开闭原则,新加订阅者需要修改服务端代码解决方案约定发布者跟订阅者之间的接口,抽象出注册、注销、通知这三个方法,发布者暴露出这三个方法给订阅者使用即可UML类图代码package main...原创 2019-04-07 19:35:10 · 299 阅读 · 0 评论 -
03_decorator_装饰者模式
背景设计一个咖啡饮料订单系统,能够获取每一种饮料的价格和描述饮料由咖啡和调料组成,每种咖啡可以搭配多种调料现有的设计:每种咖啡和调料的组合都生成一个类,单独生成价格和描述问题高耦合,咖啡和调料静态绑定后直接导致类爆炸类爆炸直接导致一系列的开发维护问题解决方案将咖啡和调料从静态绑定换成动态组合UML类图代码package mainimport "fmt"typ...原创 2019-04-16 15:58:12 · 312 阅读 · 0 评论