谈谈我对设计模式的认识

一、设计模式

我了解过一些设计模式,它们有单例模式简单工厂模式抽象工厂模式策略模式观察者模式组合模式,至于还有其他诸如装饰、代理、建造者、责任链等,受限于编程经验,都只听说过名字。
其中单例模式和工厂模式在我的印象中应该是C++项目中比较常见的设计模式了,我自己也经常在项目里用到。观察者模式我也用过一点,就是在编写一个基于Windows的GUI框架时,将自己封装的窗口类作为观察者,维护一个被观察者容器,各种属于窗口的节点类(如按钮类)作为被观察者可接收通知。

二、设计模式举例:单例模式

就稍微多说说单例模式吧,单例模式就非常常见了,其实现也比较简单。按我自己的理解来说就是构建一个只能存在一个实例的类,比如在cocos2dx源码中的Director类:

//CCDirector.h部分代码
class CC_DLL Director : public Ref
{
public:
    static Director* getInstance();

    Director();
    ~Director();
    bool init();
    
	/*
	此处省略许多声明
	*/
};

//CCDirector.cpp部分代码
static Director *s_SharedDirector = nullptr;
Director* Director::getInstance()
{
    if (!s_SharedDirector)
    {
        s_SharedDirector = new (std::nothrow) Director;
        CCASSERT(s_SharedDirector, "FATAL: Not enough memory");
        s_SharedDirector->init();
    }

    return s_SharedDirector;
}

Director类即导演类,cocos将游戏开发类比于拍电影Director类作为导演具有控制全局的作用,包括控制整个游戏的流程即开始、继续、暂停等。但导演只能有一个,因此,这就需要用到单例模式,用户通过getInstance接口获取导演的唯一实例指针。单例模式分为懒汉模式饿汉模式,以上代码需要第一次调用getInstance后指针s_SharedDirector才会被初始化,属于懒汉模式,至于两者的区别就不谈啦。

三、学习设计模式的意义

按照我个人的理解,设计模式是软件项目架构的利器,是学习面向对象程序设计的必要环节。设计模式也是面试时被考察的重点。在初学阶段,我觉得了解两三个常见的设计模式已经够了,剩下的可以在编程实践中慢慢扩展,有些设计模式在代码量足够的前提下学习之后感悟更深,收获更大。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值