随笔分类 -  设计模式

modern c++设计模式系列(一)
摘要:modern c++设计模式系列(一) 阅读全文

posted @ 2019-01-16 20:05 qicosmos(江南) 阅读(2490) 评论(0) 推荐(2)

(原创)一个超级对象池的实现
摘要:对象池对于创建开销比较大的对象来说很有意义,为了避免重复创建开销比较大的对象,我们可以通过对象池来优化。对象池的思路比较简单,事先创建好一批对象,放到一个集合中,以后每当程序需要新的对象时候,都从对象池里获取,每当程序用完该对象后,都把该对象归还给对象池。这样会避免重复的对象创建,提高程序性能。... 阅读全文

posted @ 2014-04-18 17:24 qicosmos(江南) 阅读(9761) 评论(7) 推荐(3)

(原创)composite模式和bridge模式是天生的好朋友
摘要:composite模式的意图是:将对象组合成树形结构以表示“部分-整体”的层次结构。composite使得用户对单个对象和组合对象的使用具有一致性。它的类图如下: composite模式的实现分为透明的composite模式和安全的composite模式,二者的差别是添加、删除和获取子节点的行为放到基类还是放到复合节点类中。透明的则放到基类中,但是这些行为对于不可再分的叶子节点来说是无意义的,对于存在子节点的复合节点才有意义。但是透明的组合模式具有更好的一致性和可读性,一般都建议用透明的组合模式,在基类中提供这些行为的空的虚方法,只在复合节点中重写这些虚方法。 透明的组合模式的简单实现... 阅读全文

posted @ 2014-04-11 15:04 qicosmos(江南) 阅读(2563) 评论(5) 推荐(3)

(原创)c++11改进我们的模式之改进命令模式
摘要:模式虽然精妙,却难完美,比如观察者模式中观察者生命周期的问题;比如访问者模式中循环依赖的问题等等;其它很多模式也存在这样那样的一些不足之处,如使用场景受限、实现复杂、不够简洁、不够通用等。但我觉得不足之处大都是可以采取一些手法去弥补去改进的,比如用c++11的新特性来改进。因此,便有了c++11... 阅读全文

posted @ 2013-10-21 07:43 qicosmos(江南) 阅读(4157) 评论(2) 推荐(2)

无环的visitor模式
摘要:无环的访问者模式,是来改进原有访问者模式的不足之处的,是Robert C. Martin首次提出的。我们知道访问者模式的优点是为被访问继承体系动态添加行为,而无须改变继承体系。但是GOF访问者模式的缺点是形成了一个循环依赖,强烈的耦合了两个继承体系,使得我们修改任何一方都会对另一方造成影响,所以GOF提出,被访问者的继承体系必须是稳定的,否则,一旦被访问的继承体系修改了,两边都要改。GOF访问者模式的UML类图。从图中可以看到循环依赖,一旦被访者体系发生变化,则访问者体系就要修改,这是难以接受的。 Robert C. Martin提出了一种无环的访问者模式来改进原有的不足,通过改进后,循... 阅读全文

posted @ 2013-10-08 15:30 qicosmos(江南) 阅读(2287) 评论(0) 推荐(1)

(原创)c++11改进我们的模式之改进代理模式,实现通用的AOP框架
摘要:c++11 boost技术交流群:296561497,欢迎大家来交流技术。本次要讲的时候如何改进代理模式,具体来说是动态代理模式,动态代理模式一般实现AOP框架,不懂AOP的童鞋看这里。我前面的博文也实现了一个AOP框架(可以参考我前面的博文:(原创) C++ 轻量级AOP框架),但是那个AOP框架... 阅读全文

posted @ 2013-06-25 10:09 qicosmos(江南) 阅读(3625) 评论(8) 推荐(2)

(原创)c++11改进我们的模式之改进表驱动模式
摘要:所谓表驱动法(Table-Driven Approach),简单讲是指用查表的方法获取值。表驱动是将一些通过较为复杂逻辑语句来得到数据信息的方式,通过查询表的方式来实现,将数据信息存放在表里。对于消除长的switch-case和if-else-if语句来说很有效,比如下面的代码:string Get... 阅读全文

posted @ 2013-06-20 17:39 qicosmos(江南) 阅读(5486) 评论(0) 推荐(2)

(原创)c++11改进我们的模式之改进观察者模式
摘要:和单例模式面临的是同样的问题,主题更新的接口难以统一,很难做出一个通用的观察者模式,还是用到可变模板参数解决这个问题,其次还用到了右值引用,避免多余的内存移动。c++11版本的观察者模式支持注册的观察者为函数、函数对象和lamda表达式,也避免了虚函数调用,更简洁更通用。直接看代码。template... 阅读全文

posted @ 2013-06-20 10:51 qicosmos(江南) 阅读(4110) 评论(2) 推荐(0)

(原创)c++11改进我们的模式之改进访问者模式
摘要:本次讲c++11改进我们的模式之改进访问者模式访问者模式是GOF23个设计模式中比较复杂的模式之一,但是它的功能也很强大,非常适合稳定的继承层次中对象的访问,可以在不修改被访问对象的情况下,动态添加职责,这正是访问者模式强大的地方,但是它的实现又造成了两个继承层次的强烈耦合,这也是被人诟病的地方,可以说是让人爱又让人恨的模式。c++11实现的访问者模式将会解决这个问题。我们将在c++11版本的访问者模式中看到,定义新的访问者是很容易的,扩展性很好,被访问者的继承层次也不用做任何修改。具体代码:templatestruct Visitor;templatestruct Visitor : Vis 阅读全文

posted @ 2013-06-19 22:12 qicosmos(江南) 阅读(2438) 评论(1) 推荐(0)

(原创)c++11改进我们的模式之改进单例模式
摘要:我会写关于c++11的一个系列的文章,会讲到如何使用c++11改进我们的程序,本次讲如何改进我们的模式,会讲到如何改进单例模式、观察者模式、访问者模式、工厂模式、命令模式等模式。通过c++11的改进,我们的模式变得更通用、更简洁、更强大。本次讲如何改进单例模式。在c++11之前,我们写单例模式的时候... 阅读全文

posted @ 2013-06-19 21:29 qicosmos(江南) 阅读(17735) 评论(3) 推荐(7)

导航