
设计模式
文章平均质量分 75
skylinesky
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
c++ 实现模板方法模式
模板方法模式(Template Method):定义一个操作中的算法的骨架,而将一些方法实现延迟到子类。模板方法使得子类可以不改变一个算法的结构即可以重定义该算法的某些特定步骤。 通俗一点讲,假设一个类或者算法实现需要调用函数f1、f2、f3,调用的顺序确定,为f1,f2,f3,但是对于不同的类,不同的算法,f1、f2、f3的实现过程会有不同; 那么模板方法怎么解决问题的呢?原创 2012-05-19 19:31:36 · 1096 阅读 · 1 评论 -
c++ 实现策略模式
策略模式(Strategy):它定义了算法家族,分别封装起来,让他们之间可以互相替换,此模式让算法的变化,不会影响到使用算法的客户。 上面是《大话设计模式》中给出的定义,感觉这个概念给的不好,看了之后不能完全清晰明白该模式(可能自己水平太水的原因吧)。在《effective c++》中指出,策略模式是virtual 函数的替换方法。仔细想想也差不多。如果想在不同的类中实现不同的算法,那么在基类中原创 2012-05-19 23:09:32 · 1419 阅读 · 0 评论 -
c++ 实现工厂模式
工厂模式大家都很熟悉了,就是利用多态,利用基类指针指向新生成的派生类,用该指针调用派生类的函数。 今天看《effective c++》写代码主要是练习一下,代码中类实现没有考虑太多的构造函数及虚构函数,各位见谅。 #include #include using namespace std; class Operation { public: void setNumA原创 2012-05-19 16:07:06 · 835 阅读 · 0 评论 -
建造者模式
建造者模式(Builder):建一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。 建造者模式主要用于创建一些复杂的对象,这些对象内部构建间的建造顺序通常是稳定的,但对象内部的构建通常面临复杂的变化。 都将建造者模式与装饰模式比较,一个是过程固定内容不同的建造,一个是动态的装饰。这两个模式放在一起比较,是因为它们两个明显的不同,一个过程固定,一个动态变化。 个人觉得还有原创 2012-05-29 19:24:05 · 542 阅读 · 0 评论 -
装饰模式
装饰模式(Decorator):动态的给一个对象添加一些额外的职责。 感觉这个模式可以和策略模式相比较一下,策略模式是动态灵活的改变不同的算法(由类中的setComponent(strategyX)),而装饰模式呢,setComponent(componentX);可以看出装饰模式是装饰的同类对象,大家都是继承相同的基类,实现某个相同的方法,在这个方法中,实现自己特有的操作,同时调用compoe原创 2012-05-29 16:17:07 · 477 阅读 · 0 评论