
设计模式
C++程序员Carea
十年一线开发经验,热爱 C++ ,热爱编程
展开
-
C++设计:接口与实现分离
本文翻译自C++之父的CppCoreGuidelines部分章节:C.129C++中的接口C++中的接口一般设计为不包含成员变量的抽象类,这样就只有接口的功能。如果接口类中包含了成员变量,那么势必会给派生带来麻烦。不好的设计:接口与实现混合 class Shape { // BAD, mixed interface and implementationpublic:...原创 2016-12-09 10:00:57 · 6593 阅读 · 10 评论 -
开发设计的一些基本原则 V3
开发与设计设置模式之于面向对象就像算法之于数据结构数据结构与算法容器的接口完备性1 不能重叠:多了误导别人不知道调用哪个好,增加思维负担,代码冗余;出了Bug你好统一改,你还要搜两遍;GetSlice == GetSliceVec2 不能少:少了就是残疾,无法完成某些功能;GetSlice(string sliceId) GetSlice(int sliceO...原创 2011-08-16 14:00:57 · 2141 阅读 · 2 评论 -
设计模式(三)观察者模式Observer(发布订阅)
观察者模式的目的是让博客更新之后,所有订阅了博客的人都能得到通知这里使用了只能指针来实现,从而完整的解决了资源管理的问题。Blog.h#pragma once#include #include using namespace std;#include #include "boost/weak_ptr.hpp"//#include "Observer.h"这里不能包含头文件原创 2016-03-15 11:51:51 · 1709 阅读 · 1 评论 -
设计模式(四)std::function助力抽象工厂和工厂方法
抽象工厂Abstract Factory意图:用工厂类的不同成员函数来返回不同类型的对象。这些不同的对象往往是有着共同的基类,最终是想利用多态。而多态已经被function+bind取代,所以这个模式没啥意义!特点:使用智能指针获取对象,而不是暴露原始指针。代码:#include "boost/smart_ptr.hpp"#include "boost/wea...原创 2016-03-16 11:44:57 · 4387 阅读 · 0 评论 -
设计模式(五)桥接模式Bridge == Pointer To Implementation
意图:将抽象部分与实现部分分离,使它们都可以独立的变化。(核心在抽象,为了应对变更才有了不同的实现)示例代码:接口类samplesample.h#pragma once#include "boost/smart_ptr.hpp"using namespace boost;class imp;//只需要生命无需包含源文件class sample{public: s原创 2016-03-16 22:59:49 · 1473 阅读 · 0 评论 -
设计模式(一)单例模式Singleton
在面试的时候,面试官提到了单例模式。我没有接触过,但也了解。这让面试官对我的影响有所失望,回来之后就买了《设计模式-可复用面向对象软件的基础》。翻开单例模式,发现用C++实现的单例模式还真的有点水平。单例模式指在我们的程序中有一个组件,它的类只有唯一的一个对象,也不可以创建更多的对象。这种模式就是单例模式。实现如下:上面的单例模式的实现要求我们如下方式使用类Singletonclass原创 2012-08-22 10:09:49 · 1718 阅读 · 0 评论 -
设计模式(六)策略模式Strategy
意图:定义一个系列算法,把他们一个个封装起来,并且使它们可互相替换。使得算法可以独立于使用它的客户。传统C++方法实现:#include #include using namespace std;class Strategy{public: virtual void doAlgorithm(void)=0; virtual ~Strategy(){}protected:原创 2016-03-31 19:06:41 · 950 阅读 · 0 评论 -
Boost中的单例模式
boost库实现了一个单利模式,并区分返回的是const & 还是非const &。如果返回的是const & ,则必然已经是线程安全的。如果返回的是非 const &,则不是线程安全的,需要自己注意加锁哦。代码:#includeusing namespace std;#include "boost/serialization/singleton.hpp"using name原创 2016-03-31 18:11:30 · 1675 阅读 · 0 评论 -
设计模式(二)组合模式Composite(C++沉思录:表达式求值)
组合模式目标:将对象组合成树形结构以表示部分整体的关系,Composite使得用户对单个对象和组合对象的使用具有一致性。需求:表达式求值,是编译器的重要组件,本例你能找到的实际代码应该不多,因为是本人根据《C++沉思录》里面的例子亲自敲出来的(当然都是作者的功劳)。目的在于支持各种一元运算,二元运算甚至更多的运算都加入到表达式求值中,程序方便扩展,使用简单。代码展示:说实话原创 2014-12-10 10:52:41 · 2592 阅读 · 0 评论 -
设计模式经典入门C++篇
http://blog.youkuaiyun.com/column/details/design.html转载 2014-02-21 11:16:42 · 1545 阅读 · 0 评论 -
23种设计模式:现代C++实现 V2.0
适配器模式Adapter意图:接一个类的接口转换为客户希望的另一个接口。例子:用deque实现栈或者队列桥接模式Bridge意图:将抽象部分与实现部分分离,使它们都可以独立的变化。(核心在抽象,为了应对变更才有了不同的实现)例子:Windows各种窗口使用成员指针来指向具体的实现类示例代码代理模式Proxy意图:为对象提供一种代理以控制对这个对象的访问。(核心是被代原创 2016-03-16 22:26:38 · 7723 阅读 · 0 评论