摘要:
前言 任何一种设计方式的引入都会带来额外的开支,是否使用,取决于能带来多大的好处和能带来多大的坏处,好处与坏处包括程序的性能、代码的可读性、代码的可维护性、程序的开发效率等。 线程池适用场合:任务比较多,需要拉起大量线程来处理;任务的处理时间相对比较短,按照线程的周期T1(创建阶段)、T2(执行... 阅读全文
摘要:
简介 将一个复杂对象的构建和他的表示分离,使得同样的构建过程可以创建不同的表示。 建造者模式英文:Builder 详述 建造者模式的优点是:用户只需要指定要建造的类型就可以得到它们,而具体建造的过程和细节就不需要知道了。 建造者模式结构图,最近越来越喜欢画UML类图了,清晰明了。 什么时候使用建... 阅读全文
摘要:
简介 外观模式为子系统中的一组接口提供一个一致的界面,此模式定义了一个高层接口,这个接口使这一子系统更容易使用。 详述 外观模式英文:Facade 外观模式结构图 Facade:外观类,包含所有子系统的实例,并提供更抽象的MethodA和MethodB,MethodA和MethodB内部组合了子... 阅读全文
摘要:
简介 为其他对象提供一种代理以控制对这个对象的访问。 详述 代理模式英文:proxy。 代理模式结构图 subject:提供公用接口,这样在任何想使用realsubject的时候都可以用proxy替代。 realsubject:定义proxy所代表的真实实体。 proxy:保存一个引用使得pro... 阅读全文
摘要:
简介 将核心功能和装饰功能分离,为已有功能动态新增功能。 详述 装饰者模式英文翻译:Decorator。 装饰者模式类图 component:抽象接口类。 concretecomponent:具体的component类,实现核心功能,也是待添加功能的对象。 decorator:装饰者抽象类,继承... 阅读全文
摘要:
前言 从方向上改变糟糕的代码设计,如果你还是很直白的过程式思维,还在被一大堆的if else,随处可见的for、while所困扰,是时候学习设计模式了。 正文 软件设计中的合成/聚合复用原则:尽量使用合成/聚合,尽量不要使用类继承。 合成和聚合都表示关联的特殊种类。聚合表示一种弱的”拥有“关系,体... 阅读全文
摘要:
前言 前两天学习了weak_ptr以后还是不甚明了,一则需要实际应用去锤炼,二来就是不懂观察者模式。 正文 观察者模式又叫发布-订阅模式,定义了一种一对多的依赖关系,让多个观察者对象同时监听某一主题对象,这个主题对象在状态发生改变时,会通知所有的观察者对象,使他们能够自动更新自己。通过一张visi... 阅读全文
摘要:
说明 操作系统维护malloc和free的基本原理是通过一个链表来记录的,每次malloc和free都有不小的开销,随着系统内存碎片化的加剧而开销增加,程序中可以通过申请一块大内存并自行分配的方式减少malloc和free操作,提供程序效率。提供一种简单内存池的方案供大家品鉴。 设计思路 1.已知... 阅读全文
摘要:
说明 本篇文章旨在讨论一些技术模型或者解决方案,从某一个侧面看技术的应用。 正文 1.即时战略游戏的AI设计 有没有想过WAR3的AI是怎么设计的,有木有想过做一款战略游戏的AI呢?AI的设计要基于游戏的架构:时间驱动模型或事件驱动模型,通常事件驱动的游戏可以用有限状态机的方式进行设计,或者扩展一... 阅读全文
摘要:
前言 C++有不少陷阱或者容易失误的地方,稍不注意就会导致程序bug。 正文 1.无符号数和有符号数比较 #define只是简单的文本替换,如果替换的是简单数值,默认是int,和unsigned int比较或者位操作会隐式类型转换,结果可能不是我们期望的。 2.case和break配对出现 swi... 阅读全文