Cocos2d-x3.2与设计模式(零)设计模式是什么
当你学习设计模式时,你有或多或少的疑惑,或者看完一本书之后,你仍然对设计模式没什么概念。那么GoF的《设计模式》必定使你对设计模式的理解上一个台阶,前提是你要来回阅读本书中的每一种模式并且要理解它们之间的异同。《设计模式》详细讲解了什么是设计模式以及设计模式的种类,并且它给出了每种设计模式的例子以及给出如何使用设计模式的建议。如果你真的仔细来回阅读这本书上的每种设计模式,必定有收获。
当然阅读这本之前,你最好有一定的代码量并且熟悉一种面向对象的语言。拥有一定代码量的好处就是当你看例子时就能联想到我们平时写代码时用了那种模式,这有助于加深我们对模式的理解。如果你熟悉一种面向对象的语言,就可以马上写一个属于自己的例子了。
我是边学习GoF的《设计模式》边通过Cocos2d-x3.2的源码来分析每一种模式来加深我对设计模式的理解。如果出现错误的观点也是正常,请大家多多指出。
设计模式的用处。在设计面向对象软件架构的时候,如果你想要增强软件架构的复用性,那么你得好好想如何应用设计模式了。简单来说,复用性强的架构方便我们以后拓展软件功能时做尽可能小的工作,而且提高了代码和文档的简洁性以及系统的维护性。
设计模式四个基本要素。模式名称(pattern name),它用一个名词来抽象模式的内容。问题(problem),它描述了使用模式的时机。解决方案(solution),描述了该模式中的组成部分以及它们之间相互关系。效果(consequences),它描述了使用该模式后的效果以及该模式以其他模式之间的权衡。
我们可以根据两个准则对模式分出两类。
第一是目的准则。模式根据目的可分为创建型模式(Creational)、结构型模式(Structural)和行为型模(Behavioral)。
创建型模式抽象了实例化过程,使得一个系统独立于如何创建、组合和表示它的那些对象。一个类创建型模式使用继承改变被实例化的类,而一个对象创建型模式将实例化委托给一个对象。
结构型模式描述了如何组合类和对象以获得更大的结构。结构型类模式采用继承机制来组合接口或实现。结构型对象模式不是对接口和实现进行组合,而是描述了如何对一些对象进行组合。
行为模式描述了算法和对象间职责的分配,它不仅描述了对象或类的模式,还描述对象与对象或类与类之间的通信模式,这些模式勾勒出了运行时难以跟踪的复杂控制流。行为类模式使用继承机制在类间分派行为。行为对象模式使用对象复合而不是继承。
第二是范围准则。模式根据范围可分为面向类的或面向对象的。类模式处理类和子类之间的关系,这些关系通过继承建立,是静态的,在编译时刻便确定了。对象模式处理对象间的关系,这些关系在运行时刻是可以变化的,更具动态性。从某种意义上来说,几乎所有模式都使用继承机制,所以“类模式”只指那些集中于处理类间关系的模式,而大部分模式都属于对象模式。
两种分类之间的关系。创建型类模式将对象的部分创建工作延迟到子类,而创建型对象模式则将它延迟到另一个对象中。结构型类模式使用继承机制来组合类,而结构型对象模式则描述了对象的组装方式。行为型模式使用继承描述算法和控制流,而行为型对象模式则描述一组对象怎样协作完成单个对象所无法完成的任务。
最后,本书一共讲述了23设计模式,如图1。
图1: