随笔分类 -  设计模式

摘要:1、背景 最近在看一个大佬写的服务器代码的时候,发现他写的单例模式代码很有趣,开始看的时候没看懂,后面研究了一把,发现这个代码其实就是boost里面的一种单例模式,虽然boost里面有很多单例模式,我们在这里就先研究我看到的这种。 我们来看最简单的单例模式: 这是最简单的版本,在单线程下(或者是C+ 阅读全文
posted @ 2017-12-15 21:17 Memset 阅读(629) 评论(0) 推荐(0)
摘要:1、概述 我们讲了这么多的设计模式,大家有没有发觉在很多的模式中有些角色是不干活的?它们只是充当黔首作用,你有问题,找我,但我不处理,我让其他人处理。最典型的就是代理模式了,代理角色接收请求然后传递到被代理角色处理。门面模式也是一样,门面角色的任务就是把请求转发到子系统。类似这种结构的模式还有很多, 阅读全文
posted @ 2017-09-05 23:28 Memset 阅读(824) 评论(0) 推荐(0)
摘要:1、概述 门面模式为复杂的子系统提供一个统一的访问界面,它定义的是一个高层接口,该接口使得子系统更加容易使用,避免外部模块深入到子系统内部而产生与子系统内部细节耦合的问题。中介者模式使用一个中介对象来封装一系列同事对象的交互行为,它使各对象之间不再显式地引用,从而使其耦合松散,建立一个可扩展的应用架 阅读全文
posted @ 2017-09-05 22:56 Memset 阅读(1800) 评论(0) 推荐(1)
摘要:1、概述 我们先来看两种模式的通用类图。 两者之间确实很相似。如果把策略模式的环境角色变更为一个抽象类加一个实现类,或者桥梁模式的抽象角色未实现,只有修正抽象化角色,想想看,这两个类图有什么地方不一样?完全一样!正是由于类似场景的存在才导致了两者在实际应用中经常混淆的情况发生,我们来举例说明两者有何 阅读全文
posted @ 2017-09-05 22:25 Memset 阅读(432) 评论(0) 推荐(0)
摘要:1、概述 为什么要把观察者模式和责任链模式放在一起对比呢?看起来这两个模式没有太多的相似性,真没有吗?回答是有。我们在观察者模式中也提到了触发链(也叫做观察者链)的问题,一个具体的角色既可以是观察者,也可以是被观察者,这样就形成了一个观察者链。这与责任链模式非常类似,它们都实现了事务的链条化处理,比 阅读全文
posted @ 2017-09-04 22:26 Memset 阅读(1028) 评论(0) 推荐(0)
摘要:1、概述 行为类设计模式中,状态模式和策略模式是亲兄弟,两者非常相似,我们先看看两者的通用类图,把两者放在一起比较一下。 策略模式(左)和状态模式(右)的通用类图。 两个类图非常相似,都是通过Context类封装一个具体的行为,都提供了一个封装的方法,是高扩展性的设计模式。但根据两者的定义,我们发现 阅读全文
posted @ 2017-09-04 21:38 Memset 阅读(996) 评论(0) 推荐(0)
摘要:1、概述 命令模式和策略模式的类图确实很相似,只是命令模式多了一个接收者(Receiver)角色。它们虽然同为行为类模式,但是两者的区别还是很明显的。策略模式的意图是封装算法,它认为“算法”已经是一个完整的、不可拆分的原子业务(注意这里是原子业务,而不是原子对象),即其意图是让这些算法独立,并且可以 阅读全文
posted @ 2017-09-04 21:10 Memset 阅读(5312) 评论(0) 推荐(1)
摘要:1、概述 装饰模式和适配器模式在通用类图上没有太多的相似点,差别比较大,但是它们的功能有相似的地方:都是包装作用,都是通过委托方式实现其功能。不同点是:装饰模式包装的是自己的兄弟类,隶属于同一个家族(相同接口或父类),适配器模式则修饰非血缘关系类,把一个非本家族的对象伪装成本家族的对象,注意是伪装, 阅读全文
posted @ 2017-09-04 20:42 Memset 阅读(647) 评论(0) 推荐(0)
摘要:1、概述 对于两个模式,首先要说的是,装饰模式就是代理模式的一个特殊应用,两者的共同点是都具有相同的接口,不同点则是代理模式着重对代理过程的控制,而装饰模式则是对类的功能进行加强或减弱,它着重类的功能变化,我们举例来说明它们的区别。 2、代理模式 一个著名的短跑运动员有自己的代理人。如果你很仰慕他, 阅读全文
posted @ 2017-09-04 19:35 Memset 阅读(388) 评论(0) 推荐(0)
摘要:1、概述 抽象工厂模式实现对产品家族的创建,一个产品家族是这样的一系列产品:具有不同分类维度的产品组合,采用抽象工厂模式则是不需要关心构建过程,只关心什么产品由什么工厂生产即可。而建造者模式则是要求按照指定的蓝图建造产品,它的主要目的是通过组装零配件而产生一个新产品,两者的区别还是比较明显的。 现代 阅读全文
posted @ 2017-09-03 23:30 Memset 阅读(5390) 评论(0) 推荐(1)
摘要:1、概述 工厂方法模式注重的是整体对象的创建方法,而建造者模式注重的是部件构建的过程,旨在通过一步一步地精确构造创建出一个复杂的对象。我们举个简单例子来说明两者的差异,如要制造一个超人,如果使用工厂方法模式,直接产生出来的就是一个力大无穷、能够飞翔、内裤外穿的超人;而如果使用建造者模式,则需要组装手 阅读全文
posted @ 2017-09-03 22:34 Memset 阅读(13465) 评论(1) 推荐(3)
摘要:1、定义 1.1 标准定义 桥梁模式( Bridge Pattern) 也叫做桥接模式, 是一个比较简单的模式, 其定义如下: Decouple an abstraction from its implementation so that the two can vary independently 阅读全文
posted @ 2017-08-09 00:05 Memset 阅读(1611) 评论(1) 推荐(0)
摘要:1、定义 1.1 标准定义 享元模式( Flyweight Pattern) 是池技术的重要实现方式, 其定义如下: Use sharing to support large numbers of fine-grained objects efficiently.(使用共享对象可有效地支持大量的细粒 阅读全文
posted @ 2017-08-08 22:51 Memset 阅读(285) 评论(0) 推荐(0)
摘要:1、定义 1.1 标准定义 解释器模式( Interpreter Pattern) 是一种按照规定语法进行解析的方案, 在现在项目中使用较少,其定义如下:Given a language, define a representation for its grammar along with an i 阅读全文
posted @ 2017-08-08 22:17 Memset 阅读(283) 评论(0) 推荐(0)
摘要:1、定义 1.1 标准定义 其定义如下: Allow an object to alter its behavior when its internal state changes.The object will appear to change its class.(当一个对象内在状态改变时允许其 阅读全文
posted @ 2017-08-08 21:51 Memset 阅读(257) 评论(0) 推荐(0)
摘要:1、定义 1.1 标准定义 访问者模式(Visitor Pattern)是一个相对简单的模式,其定义如下:Represent an operation to be performed on the elements of an object structure. Visitor lets you d 阅读全文
posted @ 2017-08-07 23:41 Memset 阅读(276) 评论(0) 推荐(0)
摘要:1、定义 1.1 标准定义 备忘录模式(Memento Pattern)提供了一种弥补真实世界缺陷的方法,让“后悔药”在程序的世界中真实可行,其定义如下:Without violating encapsulation,capture and externalize an object's inter 阅读全文
posted @ 2017-08-07 21:18 Memset 阅读(239) 评论(0) 推荐(0)
摘要:1、定义 1.1 标准定义 门面模式(Facade Pattern)也叫做外观模式,是一种比较常用的封装模式,其定义如下: Provide a unified interface to a set of interfaces in a subsystem.Facade defines a highe 阅读全文
posted @ 2017-08-06 23:43 Memset 阅读(343) 评论(0) 推荐(0)
摘要:1、定义 1.1 标准定义 观察者模式(Observer Pattern)也叫做发布订阅模式(Publish/subscribe),它是一个在项目中经常使用的模式,其定义如下: Define a one-to-many dependency between objects so that when 阅读全文
posted @ 2017-08-06 21:20 Memset 阅读(387) 评论(0) 推荐(0)
摘要:1、定义 1.1 标准定义 组合模式(Composite Pattern)也叫合成模式,有时又叫做部分-整体模式( Part-Whole),主要是用来描述部分与整体的关系,其定义如下: Compose objects into tree structures to represent part-wh 阅读全文
posted @ 2017-08-02 23:10 Memset 阅读(286) 评论(0) 推荐(0)