C++设计:接口与实现分离

本文翻译自C++之父的CppCoreGuidelines部分章节:C.129 C++中的接口 C++中的接口一般设计为不包含成员变量的抽象类,这样就只有接口的功能。 如果接口类中包含了成员变量,那么势必会给派生带来麻烦。 不好的设计:接口与实现混合   class Shape { ...

2016-12-09 10:00:57

阅读数 3880

评论数 9

设计模式(六)策略模式Strategy

意图:定义一个系列算法,把他们一个个封装起来,并且使它们可互相替换。使得算法可以独立于使用它的客户。 传统C++方法实现: #include #include using namespace std; class Strategy { public: virtual void doAl...

2016-03-31 19:06:41

阅读数 583

评论数 0

Boost中的单利模式

boost库实现了一个单利模式,并区分返回的是const & 还是非const &。 如果返回的是const & ,则必然已经是线程安全的。 如果返回的是非 const &,则不是线程安全的,需要自己注意加锁哦。 代码: #include using nam...

2016-03-31 18:11:30

阅读数 958

评论数 0

设计模式(五)桥接模式Bridge == Pointer To Implementation

意图:将抽象部分与实现部分分离,使它们都可以独立的变化。(核心在抽象,为了应对变更才有了不同的实现) 示例代码: 接口类sample sample.h #pragma once #include "boost/smart_ptr.hpp" using namespace bo...

2016-03-16 22:59:49

阅读数 985

评论数 0

23种设计模式:现代C++实现 V2.0

适配器模式Adapter 意图:接一个类的接口转换为客户希望的另一个接口。 例子:用deque实现栈或者队列 桥接模式Bridge 意图:将抽象部分与实现部分分离,使它们都可以独立的变化。(核心在抽象,为了应对变更才有了不同的实现) 例子:Windows各种窗口使用成员指针来指向具体的实现类 示例...

2016-03-16 22:26:38

阅读数 6116

评论数 0

设计模式(四)std::function接口编程彻底取代抽象工厂和工厂方法

  抽象工厂Abstract Factory 意图:用工厂类的不同成员函数来返回不同类型的对象。这些不同的对象往往是有着共同的基类,最终是想利用多态。而多态已经被function+bind取代,所以这个模式没啥意义!   特点:使用智能指针获取对象,而不是暴露原始指针。 代码:   ...

2016-03-16 11:44:57

阅读数 2468

评论数 0

设计模式(三)观察者模式Observer(发布订阅)

观察者模式的目的是让博客更新之后,所有订阅了博客的人都能得到通知 这里使用了只能指针来实现,从而完整的解决了资源管理的问题。 Blog.h #pragma once #include #include using namespace std; #include #include "...

2016-03-15 11:51:51

阅读数 923

评论数 0

设计模式(二)组合模式Composite(C++沉思录:表达式求值)

组合模式目标:将对象组合成树形结构以表示部分整体的关系,Composite使得用户对单个对象和组合对象的使用具有一致性。 需求:表达式求值,是编译器的重要组件,本例你能找到的实际代码应该不多,因为是本人根据《C++沉思录》里面的例子亲自敲出来的(当然都是作者的功劳)。目的在于支持各种一元运算,...

2014-12-10 10:52:41

阅读数 1742

评论数 0

设计模式经典入门C++篇

http://blog.csdn.net/column/details/design.html

2014-02-21 11:16:42

阅读数 1196

评论数 0

设计模式(一)单例模式Singleton

在面试的时候,面试官提到了单例模式。我没有接触过,但也了解。这让面试官对我的影响有所失望,回来之后就买了《设计模式-可复用面向对象软件的基础》。翻开单例模式,发现用C++实现的单例模式还真的有点水平。单例模式指在我们的程序中有一个组件,它的类只有唯一的一个对象,也不可以创建更多的对象。这种模式就是...

2012-08-22 10:09:49

阅读数 1431

评论数 0

开发设计的一些基本原则 V3

开发与设计 设置模式之于面向对象就像算法之于数据结构 数据结构与算法 容器的接口完备性 1 不能重叠:多了误导别人不知道调用哪个好,增加思维负担,代码冗余 GetSlice == GetSliceVec 2 不能少:少了就是残疾,无法完成某些功能; GetSlice(string...

2011-08-16 14:00:57

阅读数 1825

评论数 2

提示
确定要删除当前文章?
取消 删除
关闭
关闭