设计模式
xiaoxiaoluo
这个作者很懒,什么都没留下…
展开
-
建造者模式
选自《大话设计模式》建造者模式--将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示这样隐藏了产品是如何组装的,要给变一个产品的内部表示,只要再定义一个具体的建造者就可以。建造者模式是在当创建复杂对象的算法应该独立于该对象的组成部分和它的装配方式时适用。//product.h#ifndef _PRODUCT_H_#define _PRODUCT_H_#原创 2012-07-06 03:06:45 · 584 阅读 · 0 评论 -
备忘录模式
《大话设计模式》备忘录:在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。这样以后就可将该对象恢复到原先保存的状态//memo.h#ifndef _MEMO_H_#define _MEMO_H_#include using namespace std; class RoleStateMemento{ public: RoleStateM原创 2012-08-05 22:26:05 · 508 阅读 · 0 评论 -
适配器模式
《大话模式》适配器模式,将一个类的接口转换成客户希望的另外一个接口。Adapter模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。//adapter.h#ifndef _ADAPTOR_H_#define _ADAPTOR_H#include #include using namespace std;class Player{ public原创 2012-08-05 17:56:24 · 355 阅读 · 0 评论 -
状态模式
《大话设计模式》状态模式:当一个对象的内在状态改变时,允许改变其行为,这个对象看起来像是改变了其类。状态模式主要解决的是当控制一个对象状态转换的条件表达式过于复杂时的情况。把状态的判断转移到表示不同状态的一系列类中,可以把复杂的判断逻辑简化。//state.h#ifndef _STATE_H_#define _STATE_H_#include using namespa原创 2012-08-05 00:44:48 · 360 阅读 · 0 评论 -
观察者模式
来自《大话设计模式》观察者模式定义了一种一对多的依赖关系。让多个观察者对象同时监听某一个主题对象。这个主题对象在状态发生变化时,会通知所有观察者对象,使他们能够自动更新自己。这里C++实现,得注意类之间的相互引用。。。。//subjet.h#ifndef _SUBJECT_H_#define _SUBJECT_H_#include #include #include #i原创 2012-08-04 16:04:23 · 502 阅读 · 0 评论 -
外观模式
《大话设计模式》外观模式:为子系统的一组接口提供一致的界面,此模式定义了一个高层接口,这个接口使得这一子系统更加容易使用//fund.h#ifndef _FUND_H_#define _FUND_H_#include using namespace std;class fund{ public: fund() {}原创 2012-07-02 03:06:59 · 352 阅读 · 0 评论 -
迪米特法则
转自http://blog.csdn.net/zhengzhb/article/details/7296930,只是用c++写了一遍。。。定义:一个对象应该对其他对象保持最少的了解。问题由来:类与类之间的关系越密切,耦合度越大,当一个类发生改变时,对另一个类的影响也越大。解决方案:尽量降低类与类之间的耦合。 自从我们接触编程开始,就知道了软件编程的总的原转载 2012-07-02 02:17:22 · 1167 阅读 · 0 评论 -
模板方法模式
模板方法模式:定义一个算法框架,将里面的操作步骤推迟到子类中去执行,这样使得子类不用改变框架,只需改变某些操作步骤方法 //test.h#ifndef _TEST_H_#define _TEST_H_#include #include using namespace std;class TestPaper{ public:原创 2012-07-01 12:05:06 · 407 阅读 · 0 评论 -
原型模式
《大话设计模式》原型模式:用原型实例指定创建对象的种类,并通过拷贝这些原型创建新饿对象下面的例子是通过一个对象re来进行拷贝,但是指向的都是同一个对象的引用,改变克隆后的属性,原来的原型属性也改变,所以是浅复制,后面再实现一个深度复制 //examination.h#ifndef _EXAMINATION_H_#define _EXAMINATION_H_#in原创 2012-06-28 20:28:41 · 437 阅读 · 0 评论 -
简单工厂模式vs工厂方法模式
简单工厂要添加新类时,得在工厂类里面修改,添加判断生成新类的条件,这样破坏了开放-封闭的原则,内部改动,但是好处是,判断选择生成哪种类的对象交给了简单工程,而不是客户端这里而工厂方法模式改良了简单工厂模式,每种类对象对应了一个生成该类对象的工厂类,当添加新类时,只要写个新类,再写个生成这个新类对象的工厂类,不需改内部代码,满足开放-封闭原则,缺点是生成什么类型的对象就得选用什么类型的工厂,这个原创 2012-06-28 01:53:25 · 663 阅读 · 0 评论 -
代理模式
代理模式,为其他对象提供一种代理以控制找个对象 //person.h#ifndef _PERSON_H_#define _PERSON_H_#include using namespace std;class SchoolGirl{ public: string GetName() {原创 2012-06-28 01:09:25 · 505 阅读 · 0 评论 -
简单工厂模式
http://blog.csdn.net/tianshuai11/article/details/7671097根据《大话设计模式》里的例子编写的//simpleFactory.cpp#include #include #include "operation.h"using namespace std;int main(){ double numA, num原创 2012-06-25 01:14:05 · 617 阅读 · 0 评论 -
装饰器模式
《大话设计模式》装饰器模式:为已有功能动态地添加更多功能,当系统需要新功能,向旧的类中添加新功能,装饰了原有类的核心职责和行为,而不改变它们就像包装袋一样,有新款的包装袋包装之前装好东西的包装袋//clothes.h#ifndef _CLOTHES_H_#define _CLOTHES_H_#include using namespace std;cla原创 2012-06-26 20:20:51 · 445 阅读 · 0 评论 -
策略模式 + 简单工厂模式
《大话设计模式》实现代码//cash.h#ifndef _CASH_H_#define _CASH_H_#include using namespace std;class CashSuper{ public: CashSuper() {} virtual ~CashSuper() {} virtu原创 2012-06-26 02:19:33 · 643 阅读 · 0 评论 -
组合模式
《大话设计模式》组合模式:将对象组合成树形结构以表示“部分-整体”的层次结构。组合模式使得用户对单个对象和组合对象的使用具有一致性。//component.h#ifndef _COMPONENT_H_#define _COMPONENT_H_#include #include #include using namespace std;class Company{原创 2012-08-05 23:45:12 · 537 阅读 · 0 评论