cocos2dx中的设计模式

转载 2016年06月01日 23:11:35

1.二段构建模式

大家都知道在c++中我们一般在构造函数中为对象分配内存空间然后初始化成员变量,比如我们调用了new某个东西,那么在堆上会先为对象分配内存空间,然后调用构造函数,在构造函数中完成一些初始化的工作。而二段构建模式就是将内存空间的分配和初始化分开来完成,然后调用一个静态方法来返回这个对象。就拿cocos2dx中的Sprite类来说吧,当我们调用Sprite::create()的时候内部先使用new来分配内存空间,然后调用init方法来初始化一些变量的设置。所以cocos2dx中的二段构建模式就是将new分配内存空间和init初始化内容分开来处理,而不是c++传统的做法在构造函数中初始化变量。

ps:相对于构造函数的好处:

1.构造函数中不可以使用虚函数 二段构建模式中的init()就可以

2.构造函数不可以有返回值 如果我们要返回异常判断信息我们就可以用二段构建模式(try——catch机制会增大二进制文件,于游戏编程中是不可以忍受无故的内存占用的)


2.单例模式

运用:导演类,缓存类,应用类。。。。等等很多很多

简单易用,限制一个类只有一个实例,可以降低创建多个对象可能会引起的内存问题的风险,包括内存泄漏、内存占用问题。

缺点:

单例模式因为提供了一个全局的访问点,你可以在程序的任何地方轻而易取地访问到,这本身就是一种高耦合的设计。一旦单例改变以后,其它模块都需要修改。另外,单例模式使得对象变成了全局的了。学过面对对象编程的人都知道,全局变量是非常邪恶的,要尽量不要使用。而且单例模式会使得对象的内存在程序结束之前一直存在,在一些使用GC的语言里面,这其实就是一种内存泄漏,因为它们永远都不到释放。当然,也可以通过提供一些特殊的方法来释放单例对象所占用的内存,比如前面提到的XXXCache对象,都有相应的Purge方法。最后,cocos2dx里面实现的单例,99%都不是线程安全的。

3.设计模式——工厂模式
cocos2dx中也有工厂模式,何为工厂模式,顾名思义就是用来产生产品的,工厂就是用来创建其他类对象的类,我们把这个创建其他类对象的类叫做工厂类,而这些被创建的对象叫做产品,所以这种模式才叫做工厂模式

简单工厂:当在程序中创建对象的时候少不了new,有时候new会很多,又分布在程序的不同地方,管理起来很不方便,这个时候需要一个工厂类,专门负责对象的创建和释放,将对象的这种操作统一在一起,同时工厂类向外部提供了创建对象的接口,而对对象的使用则和这个工厂类毫无关系。

工厂方法:有时候我们需要添加一个新的对象实例的时候我们就得去修改工厂类 这样很麻烦 我们用继承的思想 这个模式将Factory设计为抽象类,其中包含子类必须实现的方法,而对产品的具体创建则放到Factory的子类中去完成。

抽象工厂:现在我们的产品类都是继承自Product的,如果有一个产品不是Product的子类怎么办呢?这个时候就用到了抽象工厂模式,这个模式是工厂方法模式的叠加,其他的东西类似。

设计模式——管理者模式
首先明确一个问题,什么是管理者模式,管理类是用来管理一组相关对象的类,他提供了访问对象的接口,如果这么说比较抽象的话,我们来看下cocos2dx中都有哪些类是管理类你就会很明白了,例如TextureCache, SpriteFrameCache, AnimationCache,这些类都是管理类。就拿SpriteFrame来说,这个类管理了对象spriteframe,我们通过提供一个键来获得对应的值,像AnimationCache,TextureCache不都是这样吗,用一个键来获取对应的值。所以这些类都叫做管理类,因为他们管理着一组相关的对象。之所以使用管理者模式一个是因为为访问相关对象提供了统一的接口,另一个就是缓存游戏用到的资源,提高游戏的性能
设计模式——外观模式
仍然先来说明一下何为外观模式,一个复杂的系统包含很多子系统,为了使用这个复杂的系统,我们定义一个统一的接口来使用这个复杂的系统。当用户操作的时候只要调用我们提供的这个接口就好了,至于底层的这个复杂的系统,用户不必关系是如何工作的。这里列举一个网上的例子,编译系统是一个复杂的系统,包括什么词法分析,语法分析,语义分析等等,用户在编译程序的时候不需要了解这个复杂的系统到底是怎么编译的,只要使用统一的接口编译就可以了



相关文章推荐

cocos2dx场景A跳转到场景B,然后场景B再向A回传值(委托设计模式实现)。

场景B想场景A回传值的方法很多,这里主要是想讲一下c++实现的委托设计模式,主要为理解下一篇cocos2dx里面的SAX解析XML文件作铺垫。例子:点击“next”进入场景B,然后在场景B中点击upd...

cocos2dx的几种常见设计模式

设计模式——二段构建模式 设计模式在程序设计中会经常用到,也许你从来没有留意过设计模式,其实你却一直在使用设计模式!cocos2dx中有不少的设计模式,所以从本篇博客开始探讨一下cocos2...

cocos2dx设计模式之单例模式

在百度百科中对单例模式的介绍是这个样的: 单例模式 是一种常用的软件设计模式,在它的核心结构中只包含了一个被称为单例模式的特殊的类的,通过单例模式可以保证系统中一个类只有一个实例而且这个实例易于被外...

9、Cocos2dx 3.0游戏开发找小三之工厂方法模式与对象传值

重开发者的劳动成果,转载的时候请务必注明出处:http://blog.csdn.net/haomengzhu/article/details/27693365 工厂方法模式 工厂方法是程序设计中...

cocos2dx 3.2 新的事件分发机制 (观察者/订阅者模式)

cocox2dx 3.2的事件系统是基于观察者模式,又称订阅者模式来实现的。 观察者/订阅者模式 概述 观察者模式定义了一种一对多的依赖关系,多个观察者(订阅者)对象同时监听某一状态对象。这个对象的状...

cocos2dx 观察者模式详解

cocos2d-x 观察者模式 游戏中经常遇到几个层之间互相通信的问题。比如,当前页是游戏页,游戏结束的时候,直接显示结算页,不进行转场了,结算页上又有按钮。这时如果要响应按钮点击事件处理一...

cocos2dx关卡选择界面设计

重点内容 做游戏时候经常用到关卡选择,写了个关卡选择界面逻辑类,关卡解锁,关卡类型显示,打过的关卡星级评定,一共六大关,每个大关10个小关,ui使用cocostudio编辑,代码如下: Level...

cocos2dx3.3开发FlappyBird总结六:设计共享小鸟类(主角)

主角小鸟有三种状态:idle、fly、die。 idle状态下,小鸟会挥动翅膀,原地不动,且不受重力的影响。 fly状态下,也就是游戏过程中小鸟移动,此状态下小鸟挥动翅膀飞行移动且受重力的影响。 ...

cocos2dx异步网络UI界面更新设计

cocos2dx异步网络UI界面更新设计主要有两个部分 a.异步网络请求 b.UI界面更新 主要思路: 创建一个用于UI界面更新的类: 主要代码如下 有 界面的更新 和 界面任务的更添加...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)