本文系转载,转载地址http://blog.sina.com.cn/s/blog_59b6af690100zj3l.html,只供自己学习使用. 假设现在有三种产品,是玩具,都是由三部分组成,头,身体,和脚丫,现在要实现生产不同组合产品的功能,例如第一种产品是红头,绿身体,黑脚第二种产品是绿头,黑身体,红脚第三种产品是黑头,红身体,绿脚丫现在现写一个build基类, class builder { public: ; ; ; }; 具体实现类:第一种产品各个零部件的生产 class builde…
链接转自:http://blog.csdn.net/wuzhekai1985/article/details/6667467 主要思想是:首先有个指挥家思想者将大体的设计思路设计出来,然后寻找一部分工人来按照设计者的思想来进行操作.…
1.对象创建型模式 1.3           Abstract Factory模式 1.3.1 需求 在下面情况能够使用Abstract Factory模式: •  一个系统要独立于它的产品的创建.组合和表示时(这个需求和FactoryMethod类似). •  一个系统要由多个产品系列中的一个来配置时(这个需求也和Factory Method类似). •  当你要强调一系列相关的产品对象的设计以便进行联合使用时(这个需求表明一个工厂要创建多个相关的产品对象,是比FactoryMethod多的…
1.对象创建型模式 1.4          Protoype模式 1.4.1需求 通过拷贝原形对象创建新的对象. 1.4.2结构 •P r o t o t y p e(Gr a p h i c) - 声明一个克隆自身的接口. •C o n c r e t e P r o t o t y p e(S t a ff.W h o l e N o t e.H a l fN o t e) - 实现一个克隆自身的操作. •  C l i e n t(G r a p h i c To o l) - 让一个原…
一.意图 将一个复杂对象的构建与它的表示分离,使得同样的构造过程可以创建不同的表示. 二.动机 一个复杂的对象的构造过程中,原料相同,可能会要求生产不同的产品,并且生产的产品种类还能够方便的增加.Bulider模式期望将解析原材料的过程与利用原材料生产产品的过程分离开,以达到用户不需要知道根据原材料构建产品的详细过程,并可以方便的增加新的产品. 三.适用性 当创建复杂对象的算法应该独立于该对象的组成部分以及它们的装配方式时. 当构造过程必须允许被构造的对象有不同的表示时. 四.类图 如以上类图所…
1.意图 保证一个类仅有一个实例,并提供一个访问它的全局访问点. 2.动机 对一些类来说,只有一个实例是很重要的.让类自身负责保存它唯一的实例,这个类可以保证没有其他实例可以被创建(通过截取创建新对象的请求),并且它可以提供一个访问该实例的方法. 3.适用性 当类只能有一个实例而且客户可以从一个周所周知的访问点访问它时. 当这个唯一实例应该是通过子类化可扩展的,并且客户应该无需更改代码就能使用一个扩展的实例时. 4.结构 5.代码实例 #include <iostream> #include…
意图 提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类. 适用性 在以下情况可以使用 Abstract Factory模式 • 一个系统要独立于它的产品的创建.组合和表示时. • 一个系统要由多个产品系列中的一个来配置时. • 当你要强调一系列相关的产品对象的设计以便进行联合使用时. • 当你提供一个产品类库,而只想显示它们的接口而不是实现时. 结构 模式结构图如下所示:…
Singleton模式即为单例模式/单件模式. (一)意图--保证一个类仅有一个实例,并提供一个访问它的全局访问点. 如一台计算机可以有多个端口,但是应该统一管理这些端口,避免访问冲突.--选择Singleton模式就是为了避免不一致状态的发生. (二)动机 一个全局变量使得一个对象可以被访问,但是它不能防止产生实例化多个对象. 为解决以上问题,使类本身负责保存它的唯一实例,这个类保证没有其他实例可以被创建,提供一个访问该实例的方法Instance操作.--这就是Singleton模式. (三)…
1.意图 用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象. 2.动机 通过拷贝或者“克隆”一个类的实例来创建新的实例. 3.适用性 当一个系统应该独立于它的产品创建.构成和表示时,要使用Prototype模式:以及 当要实例化的类是在运行时刻指定时,例如,通过动态装载:或者 为了避免创建一个与产品类层次平行的工厂类层次时或者 当一个类的实例只能有几个不同状态组合中的一种时.建立相应数目的原型并克隆它们,可能比每次用合适的状态手工实例化该类更方便一些. 4.结构 5.代码实例 #i…
1.意图 将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示. 2.结构 3.参与者 Builder为创建一个Product对象的各个部件指定抽象接口 ConcreteBuilder实现Builder的接口以构造和装配该产品的各个部件定义并明确它所创建的表示提供一个检索产品的接口 Director构造一个使用Builder接口的对象 Product表示被构造的复杂对象包含定义组成部件的类 4.协作…