现在位置: 首页 > 设计模式
一个月下来,把常见的20个设计模式好好复习并且逐个用C++实现了一遍,收获还是很大的,很多东西看上去明白了但是真正动手去做的时候发现其实还是不明白——我深知这个道理,于是不敢怠慢,不敢写什么所谓的解释原理的伪代码,不敢说所谓的"知道原理就可以了"……因为我知道,我还还没有资格说这个话,至少对于设计模式而言我还是一个初学者,唯有踏实和实干才能慢慢的掌握到知识。 在我学习设计模式的过程中,觉得造成理...
阅读全文
2014-02-18 06:27 工业·编程 ⁄ 共 10316字 暂无评论
从2005年初听说设计模式,到现在虽然已经8年多了,但GoF的23种模式依然盛行,当然GoF提出这些模式的年代更加久远(1995年)。 在工作的过程中,陆陆续续接触了GoF的大部分模式,我记得在2008年的时候就想总结一 下设计模式(最近想做的两件事情),最后因为各种原因也没有完成。最近这段时间正好是职业空档期,没什么事儿做,就把之前看过的设计模式翻出来整理了一 下,于是就有了上面几篇文章。 整理设计模式的过程,也是一个...
阅读全文
2013-05-05 06:45 工业·编程 ⁄ 共 5167字 评论 7 条
     为什么写这本书?今年5月份,我在JavaEye上发了一个帖子,其中提到自己已经工作9年了,总觉得这9年不应该就这么荒废了,应该给自己这9年的工作写一个总结,总结的初稿就是这本书。       在谈为什么写这本书之前,先抖抖自己这9年职业生涯吧。大学时我是学习机械的,当时计算机刚刚热起来,自己也喜欢玩一些新奇的东西,记得最清楚的是用VB写了一个自由落体的小程序,模拟小...
阅读全文
设计模式是这些原则在某些特定公共场景下标准化的应用,接下来让我们通过一些例子学习什么是设计模式。 Farhana: 当然,我喜欢例子。 Shubho: 让我们以汽车为例讨论一下。汽车是一个很复杂的对象,由成千上万的其它对象组成,如发动机,车轮,方向盘,车座,车体等等其他不同的部分或部件。 汽车部件 当装配汽车时,制造商需要集中并装配这些更小的自成汽车子系统的不同部件。而这些不同的小部件同样也是复杂的对象,其它制造...
阅读全文
#include <iostream> #include <vector> using namespace std; // struct ILight { public:     virtual ~ILight() { }     virtual void Switch() = 0; }; class CLightOn : public ILight { public:     virtual ~CLightOn() { }     virtual void Switch() { cout<<"on to off"<<endl;...
阅读全文
#include <iostream> #include <vector> using namespace std; // class CMemento { public:     CMemento(int vitality, int attack, int defense) : m_vitality(vitality), m_attack(attack), m_defense(defense) { }     CMemento& operator=(const CMemento& memento)     {         m_vit...
阅读全文
#include <iostream> using namespace std; // struct IMeditor; struct IPerson { public:     IPerson() : m_pMeditor(NULL) { }     virtual ~IPerson() { }     void SetMeditor(IMeditor *pMeditor) { m_pMeditor = pMeditor; }     virtual void SendMessage(string message) = 0;     virtual void RecvMessage(...
阅读全文
#include <iostream> using namespace std; // struct IManager { public:     IManager(IManager *pHighLevelManager) : m_pHighLevelManager(pHighLevelManager) { }     virtual ~IManager() { }     virtual void dealWithRequest(int num) = 0; protected:     IManager *m_pHighLevelManager; }; class CCommonManager : public...
阅读全文
#include <iostream> #include <list> using namespace std; // struct IElement; struct IVisitor { public:     virtual ~IVisitor() { }     virtual void VisitFood(IElement *pElement) = 0;     virtual void VisitDrink(IElement *pElement) = 0; }; struct IElement { public:     IElement(string name) : m_na...
阅读全文
#include <iostream> #include <list> using namespace std; // class CReceiveTV { public:     void OpenTV() { cout<<"open TV."<<endl; }     void ChangeTV() { cout<<"change TV."<<endl; }     void CloseTV() { cout<<"close TV."<<endl; } }; struct ICommand...
阅读全文