c++设计模式(精简版)

c++设计模式(精简版)

ID:47092626

大小:162.00 KB

页数:22页

时间:2019-07-25

c++设计模式(精简版)_第1页
c++设计模式(精简版)_第2页
c++设计模式(精简版)_第3页
c++设计模式(精简版)_第4页
c++设计模式(精简版)_第5页
资源描述:

《c++设计模式(精简版)》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、C++设计模式一、功能   将一个类的接口转换成客户希望的另外一个接口,解决两个已有接口之间不匹配的问题。Adapter模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。二、结构图  (1)classadapter  (2)objectadapter    三、实现  和其他很多模式一样,学习设计模式的重点是学习每种模式的思想,而不应拘泥于它的某种具体结构图和实现。因为模式是灵活的,其实现可以是千变万化的,只是所谓万变不离其宗。在STL中大量运用了Adapter模式,象functionadapter、iteratoradpter,它们与这里说的adapt

2、er结构并不一样,但思想是一样的。具体的介绍可到侯捷网站上找相关文章,他讲得非常好。  四、示例代码  (1)classadapternamespaceDesignPattern_Adapter{//classAdapteeclassAdaptee{public:voidSpecialRequest(){}};//classTargetclassTarget{public:virtualvoidRequest()=0;};//classAdapterclassAdapter:publicTarget,privateAdaptee{public:virtualvoid

3、Request(){SpecialRequest();}};}客户端代码:{usingnamespaceDesignPattern_Adapter;Target*p=newAdapter();p->Request();//实际上调用的是Adaptee::SpecialRequest()}(2)objectadapternamespaceDesignPattern_Adapter{//classAdapteeclassAdaptee{public:voidSpecialRequest(){}};//classTargetclassTarget{public:virtu

4、alvoidRequest()=0;};//classAdapterclassAdapter:publicTarget{public:virtualvoidRequest(){_adaptee.SpecialRequest();}private:Adaptee_adaptee;};}客户端代码:{usingnamespaceDesignPattern_Adapter;Target*p=newAdapter();p->Request();//实际上调用的是Adaptee::SpecialRequest()}  六、实例  (1)STL中的ClassAdapter  S

5、TL中的AdapterClass包括:a.stack(对应的adaptee是deque)。b.queue(对应的adaptee是deque)。c.priority_queue(对应的adaptee是vector)。下面是从VC中的拷出的stack的类定义:templateclass_Container=deque<_Ty>>classstack{//LIFOqueueimplementedwithacontainerpublic:typedef_Containercontainer_type;typedeftypename_Container::val

6、ue_typevalue_type;typedeftypename_Container::size_typesize_type;stack():c(){//constructwithemptycontainer}explicitstack(const_Container&_Cont):c(_Cont){//constructbycopyingspecifiedcontainer}boolempty()const{//testifstackisemptyreturn(c.empty());}size_typesize()const{//testlengthofstac

7、kreturn(c.size());}value_type&top(){//returnlastelementofmutablestackreturn(c.back());}constvalue_type&top()const{//returnlastelementofnonmutablestackreturn(c.back());}voidpush(constvalue_type&_Val){//insertelementatendc.push_back(_Val);}voidpop(){//eraselastelementc.pop_back();}bool

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。