学习设计模式
文章平均质量分 90
「已注销」
这个作者很懒,什么都没留下…
展开
-
学习设计模式(1)——面向接口编程
今天,开始看《Head First 设计模式》,突然有一种醍醐灌顶的感觉。之前,困扰我许久的问题,突然得到了解答,就像是秘籍一样(我还是太菜了,哈哈)。第一章,介绍——面向接口编程。这是一种,比面向实现编程,更高阶的设计模式。我之前写代码,全都是面向实现编程,每个类代表一种事物,各种事物最终由一个总管类去处理业务逻辑,形成一个软件。表面上,这是一种面向对象的编程方法,而且很彻底的面向对原创 2016-10-28 13:58:23 · 1002 阅读 · 1 评论 -
学习设计模式(2)——MVC模式
看了,MVC模式的介绍,并调试了一段C++代码。简单的说,MVC模式就是:订阅——>通知——>取消订阅 没错,就是3个事情。其中,可以把类分为2种。一种是:主题类(Subject类)。一种是观察者类(Observer类)。主题类,可以提供:订阅函数,取消订阅函数,状态变更函数,通知观察者函数等等。观察者,可以自由定制功能,例如收到通知之后的业务逻辑放在此处。原创 2016-10-30 00:31:49 · 390 阅读 · 0 评论 -
学习设计模式(3)——单例模式和类的成员函数中的静态变量的作用域
单例模式,有很多种写法,以下是我实践过的一种写法。记录下来。关键:(1)使用的是引用,而不是指针。虽然我很喜欢用指针,但是在此处,我认为引用更合适。(2)据说这是可以用于多线程的。代码如下:logger.h .//---------#ifndef _LOGGER_H#define _LOGGER_H#原创 2017-01-09 15:23:20 · 765 阅读 · 0 评论 -
学习设计模式(4)——桥接模式
今天学习了桥接模式,感觉很受启发。1.桥接模式UML图2. 理解桥接模式(1) 将抽象和实现分离开来。(2) 不同的实现可以自由发展。(3) 不同的抽象,也可以有许多不同的继承,这些继承可以多种多种。3. 代码说明 :(1) shape是最高抽象,然后你可以自己继承多种形状,圆形,方形,星型,三角形等等。(2) 实现部分,就可以多原创 2017-02-11 15:37:01 · 327 阅读 · 0 评论 -
学习设计模式(5)——装饰器模式
装饰器模式,挺难学的,感觉技巧上复杂一点,有那么一丝递归的意思在里面。第一次看代码,看的云里雾里,在我单步调试之后,终于明白了装饰器模式的关键写法——调用父类(含参)构造函数,再直接调用父类的函数去执行。这样就可以依次把要装饰的东西,全都装上去。表面上和建造者模式非常相似,仔细想想,建造者模式更简单明了。但是,我想装饰器模式有他存在的必要,因为建造者模式是组装成一个东西,而装饰原创 2017-02-13 23:27:43 · 271 阅读 · 0 评论 -
学习设计模式(6)——建造者模式
1.介绍这个模式,非常有用。有时候,你的一个类,有许多函数功能,你又不希望在这个类里面再增加一个管理函数调用的接口,但你又不希望用全局变量来操作这批函数,怎么办?你还可以用建造者模式。2.具体使用说明最经典的例子,莫过于《effective C++》条款23,宁以non-member,non-friend替换member函数。我就是从这里学的建造者模式。虽然在Mey原创 2017-02-14 13:36:04 · 253 阅读 · 0 评论 -
学习设计模式(7)——6大原则
1.开闭原则对修改关闭,对扩展开放。即尽量不允许修改,但鼓励扩展。理解 : 一个虚基类,然后有多个子类,允许继续扩展新的子类,但是已有的子类不建议修改。2.里氏替换原则父类必须可以被子类替换,否则就不应该设计为其子类。理解 : 在子类继承父类之后,子类应当只实现虚函数的部分,不应当实现不是虚函数的函数。不要重写父类的方法,也不要重载父类的方法。原创 2017-02-23 23:23:28 · 293 阅读 · 0 评论 -
学习设计模式(8)——单例模式2
单例模式非常经典,很有用处,在某些特定用途特别有用。 例如,日志模块,我们希望只存在一个实例,就可以用单例模式。 下面是单例模式的经典代码,把下面 C++ 代码片段中的 Singleton 替换成实际类名, 快速得到一个单例类:#include using namespace std;class Singleton {public: static Si原创 2017-03-02 17:10:55 · 243 阅读 · 0 评论