中国 - 喜马拉雅

       Let life be beautiful like summer flowers . . .
摘要: 工厂模式强制用一个通用的工厂(factory)来创建对象,而不允许将创建对象的代码散布于整个系统。如果程序中所有需要创建对象的代码都转到这个工厂执行,那么再增加新对象时的所要做的全部工作就是只需修改工厂。这种设计是众所周知的工厂方法的一种变体。 #include <iostream>#include <stdexcept>#include <cstddef>#include <string>#i... 阅读全文
posted @ 2012-10-01 16:48 chinaxmly 阅读(201) 评论(0) 推荐(0) 编辑
摘要: 职责链(Chain of Responsibility)模式:在提出一个请求时,一个链序列中的每个策略都试图满足这个请求。这个过程直到有一个策略成功满足该调用或者到达链序列的末尾才结束。 除了调用一个函数来满足某个请求外,链中的多个函数都有机会满足这个请求,因此它有点专家系统的意味。由于职责链实际上就是一个链表,它能够动态创建,因此它可以看做是一个更一般的动态构建的switch语句。 在这里可... 阅读全文
posted @ 2012-10-01 12:54 chinaxmly 阅读(201) 评论(0) 推荐(0) 编辑
摘要: 模版方法模式是“坚持相同的代码”,而被覆盖的函数是“变化的代码”。然而,这种变化在编译时通过继承被固定下来。按照“组合优于继承”的格言,可以利用组合来解决将变化的代码从“坚持相同的代码”中分开的问题,从而产生策略(Strategy)模式。这种主法有一个明显的好外:在程序运行时,可以插入变化的代码。策略模式也加入了“语境”,它可以是一个代理类,这个类控制着对特定策略对像的选择和使用——就像状态模式一... 阅读全文
posted @ 2012-10-01 12:16 chinaxmly 阅读(380) 评论(0) 推荐(0) 编辑
摘要: 应用程序结构框架允许从一个或一组类中继承以便创建一个新的应用程序,重用现存类中几乎所有的代码,并且覆盖其中一个或多个函数以便自定义所需要的应用程序。应用程序结构框架中的一个基本的概念是模版方法(Template Method)模式,它很典型地隐藏在覆盖的下方,通过调用基类的不同函数(这时覆盖了其中一些函数以创建应用程序)来驱动程序运行。 模版方法的一个重要特征是它的定义在基类中(有时作为一个私有... 阅读全文
posted @ 2012-09-30 23:30 chinaxmly 阅读(191) 评论(0) 推荐(0) 编辑
摘要: 适配器(Adapter)模式接受一种类型并提供一个对其他类型的接口。This is useful when you’re given a library or piece of code that has a particular interface, and you’ve got a second library or piece of code that uses the same basic... 阅读全文
posted @ 2012-09-30 22:55 chinaxmly 阅读(422) 评论(0) 推荐(0) 编辑
摘要: 状态模式产生一个可以改变其类的对象,当发现大多数或者所有函数中都存在有条件的代码时,这种模式很有用。和代理模式一样,这种模式通过一个前端对象来使后端实例对象履行其职责。然而,在前端对象生存其间,状态模式从一个实现对象到另一个实现对象进行切换,以实现对于相同函数调用产生不同的行为。 例如,在青蛙王子童话中,青蛙王子依照其所处的状态而有不同的行为。先通过测试一个bool变量来实现: // Kiss... 阅读全文
posted @ 2012-09-30 21:07 chinaxmly 阅读(262) 评论(0) 推荐(0) 编辑
摘要: 代理(Proxy)模式和状态(State)模式都提供一个代理(Surrogate)类。代码与代理类打交道,而做实际工作的类隐藏在代理类背后。当调用代理类中的一个函数时,代理类仅转而去调用实现类中相应的函数, 代理模式和状态模式的区别很简单:代理模式只有一个实现类,而状态模式可以有多个实现。代理模式和状态模式的应用也不相同:代理模式控制其对实现类的访问,而状态模式动态地改变其实现类。 #incl... 阅读全文
posted @ 2012-09-30 20:30 chinaxmly 阅读(344) 评论(0) 推荐(0) 编辑
摘要: 命令模式就是一个函数对像:一个作为对象的函数。通过将函数封装为对象,就能够以参数的形式将其传递给其他函数或都对象,告诉它们在履行请求的过程中执行特定的操作。可以说,命令模式是携带行为信息的信使。 #include <iostream>#include <vector>using namespace std;class Command {public: virtual void execute()... 阅读全文
posted @ 2012-09-30 19:48 chinaxmly 阅读(297) 评论(0) 推荐(0) 编辑
摘要: 单件模式,是允许一个类有且仅有一个实例的方法。 #include <iostream>using namespace std;class Singleton { static Singleton s; // 创建静态对象 int i; Singleton(int x) : i(x) { } // 禁止构造函数 Singleton(const Singleton&); /... 阅读全文
posted @ 2012-09-30 18:02 chinaxmly 阅读(273) 评论(0) 推荐(0) 编辑
摘要: 1. 内存对界原理 在C语言中,结构是一种复合数据类型,其构成元素既可以是基本数据类型(如int、long、float等)的变量,也可以是一些复合数据类型(如数组、结构、联合等)的数据单元。在结构中,编译器为结构的每个成员按其自然对界(alignment)条件分配空间。各个成员按照它们被声明的顺序在内存中顺序存储,第一个成员的地址和整个结构的地址相同。例如: struct struct1 {... 阅读全文
posted @ 2012-09-30 14:01 chinaxmly 阅读(978) 评论(0) 推荐(1) 编辑