![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
设计模式
文章平均质量分 58
中华圆圆
这个作者很懒,什么都没留下…
展开
-
C++享元模式(以放置类游戏添加小兵为例)
享元模式是为了应对大量细粒度对象重复的问题。程序中存在大量细粒度的对象,每次要使用时都必须创建一个新的对象,既影响了运行效率又增加了内存消耗。于是有了享元模式,享元模式提取出这些细粒度对象中间公共的状态(属性,我的理解),只生成一个实例对象,所有用到这些公共属性对象的地方,都指向这一个实例。例如在一局放置类游戏中,现在要实现程序,该怎么办呢?首先要考虑的是小兵和地图的实现,可以定义一个小兵的类(我们这里只考虑一种类型的小兵),成员变量包括小兵的阵容(即颜色)位置等信息,另外再定义一个地图的类,成员变量中有原创 2021-01-18 12:59:05 · 288 阅读 · 0 评论 -
C++外观模式(以王者荣耀(万象天工)界面为例)
外观模式的定义:为子系统中的一组接口(相当与上面的模块)提供一个一致的界面。此模式定义了一个高层接口,这个结口使得这一子系统更加easy使用。 其实说白了就是:我们仅仅需调用高层的函数接口。而不用关心高层内部调用是怎样组合底层方法的。更不用关心底层函数是怎样实现的。绝大多数软件都有一个首页或者导航页面,同时也提供了菜单或者工具栏,在这里,首页和导航页面、菜单和工具栏就是外观角色,通过它们用户可以快速访问子系统,降低了系统的复杂程度。我们以王者荣耀游戏模式选择(万象天工)的界面为例:在这个界面有许多的游戏模原创 2021-01-16 12:56:17 · 1183 阅读 · 2 评论 -
c++装饰器模式(以英雄人物皮肤穿戴为例)
装饰器模式(DECRATOR):为了实现动态的给对象添加职能,即从外部给对象添加相关职能。装饰器模式有点类似于建造者模式,两者的区别是建造者模式必须按照规定的步骤来构建某个对象,而装饰器模式就不需要这样做,两者还有一个区别是建造者模式按照统一步骤一步一步来,而装饰器模式是为这个已经建造好的对象添加其它东西。我们以游戏人物的形象为例子,在现在的游戏中最多的就是各种各样的皮肤,所谓的穿皮肤,其实就是在已有的形象上,进行修改。uml图如下:(仅作为展示,没有具体的写类的方法)代码实现如下:class原创 2021-01-07 22:50:08 · 217 阅读 · 0 评论 -
c++组合模式(以访问文件夹为例子)
DP书上给出的定义:将对象组合成树形结构以表示“部分-整体”的层次结构。组合使得用户对单个对象和组合对象的使用具有一致性。注意两个字“树形”。这种树形结构在现实生活中随处可见,比如一个电脑中,它有文档,新的文件夹。不管是新的文件夹还是总的文件夹,在它们中基本都有文档或者新的文件夹等。对于总文件夹来说,不论是新的文件夹,还是文档都是它的一部分。整个文件夹的拓扑图就是一个树形结构。接下来我们只访问文件夹。代码实现为:class Floder {public: Floder(string n) {原创 2021-01-05 20:13:49 · 233 阅读 · 0 评论 -
C++桥接模式
桥接模式是将它的抽象部分和实现部分分离,使它们可以独立的变化。抽象部门和实现部分是独立的,通过它们的组合可以派生出很多不同类型的对象。在一个系统内如果有两个独立变化的维度,使用桥接模式可以减少类的数量。...原创 2021-01-03 21:57:12 · 643 阅读 · 0 评论 -
C++单例模式的简单分析
单例模式也称为单件模式、单子模式,可能是使用最广泛的设计模式。其意图是保证一个类仅有一个实例,并提供一个访问它的全局访问点,该实例被所有程序模块共享。单例模式要做如下事情:1.不能通过构造函数构造,否则就能够实例化多个。构造函数需要私有声明2.保证只能产生一个实例...原创 2020-12-22 20:02:08 · 191 阅读 · 0 评论 -
C++简单工厂模式的分析(以电脑输入法为例)
简单工厂模式简单的来说,就是由一个对象决定创建出哪一种类。接下来我们以单纯的电脑上选择输入法的例子来进行简单工厂模式的分析。例如:我们现在电脑上基本上都装了好几种输入法,用户往往只需要简单的鼠标操作几下或者快捷键切换,来迅速得到你想要的输入法,假设你的电脑上装有QQ输入法、搜狗输入法、微软拼音输入法,用户可以设置使用哪种类型的输入法,那我们可以通过分析可知,我们只需要定义一个接口类(InputMethod)来得到用户的操作指令,然后通过定义一个简单的工厂类(SimpleFactory)来调用具体的输入原创 2020-12-23 21:19:25 · 122 阅读 · 0 评论 -
C++抽象工厂模式(以赛博朋克游戏难度为例)
抽象工厂模式(Abstract Factory Pattern):在抽象工厂模式中,每一个具体工厂都提供了多个工厂方法用于产生多种不同类型的产品,这些产品可以没有任何的联系,位于不同的产品等级,但这些产品可以组合起来,构成一个产品族。抽象工厂模式是工厂方法模式的进一步延伸,由于它提供了功能更为强大的工厂类并且具备较好的可扩展性,在软件开发中得以广泛应用。使用抽象工厂模式来实现在不同的操作系统中应用程序呈现与所在操作系统一致的外观界面。接下来我们以目前比较火热的赛博朋克为例子进行分析,我们知道这个游戏有4种原创 2020-12-25 12:09:54 · 195 阅读 · 0 评论 -
C++原型模式
原型模式在DP书上的定义为:用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象。接下来我们以一个简单的例子来进行分析:玩过英雄联盟的都知道,英雄联盟有一个英雄:萨科(恶魔小丑),它的大招就是创建一个分身,除了不能放技能其它属性都与本体差不多。我们如何实现这个分身的功能呢?其实就是使用原型模式;原型模式就是这么一个道理,通过现有的东西,再复制拷贝出一个或者多个。在这个案例上我们使用原型模式的好处:1 这个分身是游戏过程中动态生成的。萨科使用了这个功能就动态生成分身。2 这个分身几乎就是萨科原创 2020-12-26 22:12:56 · 148 阅读 · 0 评论 -
C++建造者模式(以英雄属性为例)
建造者模式:将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。建造者模式是一种对象创建型模式。使用环境:当一个类的构造函数参数个数超过4个,而且这些参数有些是可选的参数,考虑使用构造者模式。接下来我们以moba类英雄开发的英雄开发为例进行分析,我们知道英雄都有一些基本属性:攻击力,防御力,血量等等,但是同时他们也有一些差别,有些英雄有法力值,而有些英雄没有;有些英雄有能量值,而有些英雄没有。我们这时候就可以使用建造者模式来构建英雄类。...原创 2020-12-28 15:22:14 · 593 阅读 · 0 评论 -
C++适配器模式(以已经存在的聊天功能模块去应用到其它软件为例)
适配器模式:定义:Convert the interface of a class into another interface clients expect. Adapter lets classes work together that couldn’t otherwise because of incompatible interfaces.(将一个类的接口变换成客户端所期待的另一种接口,从而是原本因接口不匹配而无法在一起工作的两个类能够在一起工作。)适配器模式在现在开发中其实就是在不修改原来已经成原创 2021-01-01 23:14:57 · 120 阅读 · 0 评论