
设计模式
文章平均质量分 53
丿寒风
网易游戏双端开发3年,创业游戏前端主程4年,3D设计软件架构师5年...
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
框架设计-数显分离
概述无论是前端业务,还是各种游戏系统和玩法,随着时间的推移,都会变得越来越复杂,越来越庞大,越来越繁琐,解决复杂业务的一个解决方案就是数据驱动(Data Driven)。数据驱动的核心思想是——数显分离,以数据为中心,业务只是数据的各种不同呈现形式。无论逻辑多么繁杂,纯粹的数据都只有一份,而且非常简单。下面看看如何逐步的实现,数显分离…示例为了方便说明,假设有一个显示对象 Display,它有一个坐标属性 x,y,如下:class Display { let x; let y;}原创 2021-03-29 08:56:30 · 782 阅读 · 0 评论 -
23种设计模式C++实例之桥接模式
【代码】23种设计模式C++实例之桥接模式。原创 2015-12-16 11:03:08 · 1354 阅读 · 0 评论 -
23种设计模式C++实例之策略模式
【代码】23种设计模式C++实例之策略模式。原创 2016-08-10 23:45:12 · 1559 阅读 · 0 评论 -
23种设计模式C++实例之责任链模式
【代码】23种设计模式C++实例之责任链模式。原创 2016-08-10 23:46:44 · 901 阅读 · 0 评论 -
23种设计模式C++实例之命令模式
【代码】23种设计模式C++实例之命令模式。原创 2016-08-10 23:48:10 · 997 阅读 · 0 评论 -
23种设计模式C++实例之访问者模式
【代码】23种设计模式C++实例之访问者模式。原创 2016-08-10 23:49:45 · 1204 阅读 · 0 评论 -
23种设计模式C++实例之中介者模式
【代码】23种设计模式C++实例之中介者模式。原创 2016-08-10 23:51:14 · 1177 阅读 · 0 评论 -
23种设计模式C++实例之备忘录模式
【代码】23种设计模式C++实例之备忘录模式。原创 2016-08-10 23:52:52 · 906 阅读 · 0 评论 -
23种设计模式C++实例之迭代器模式
【代码】23种设计模式C++实例之迭代器模式。原创 2016-08-10 23:54:23 · 993 阅读 · 0 评论 -
23种设计模式C++实例之解释器模式
【代码】23种设计模式C++实例之解释器模式。原创 2016-08-10 23:55:55 · 1113 阅读 · 0 评论 -
23种设计模式C++实例之概述和设计原则
设计模式是对软件设计中普遍存在、反复出现的各种问题,所提出的解决方案。原创 2015-12-11 19:19:05 · 4353 阅读 · 0 评论 -
游戏开发中常用的的设计模式
单例模式游戏客户端就是一个单例。 各类单例器,如UI管理器,事件管理器等。下面是Python实现的一个单例。class Singleton(object): @classmethod def Instance(cls): if not getattr(cls, "_instance", None): cls.__instance_num__原创 2017-01-17 18:07:05 · 1872 阅读 · 0 评论 -
23种设计模式C++实例之状态模式
【代码】23种设计模式C++实例之状态模式。原创 2016-08-10 23:43:44 · 1831 阅读 · 0 评论 -
23种设计模式C++实例之观察者模式
【代码】23种设计模式C++实例之观察者模式。原创 2016-08-10 23:38:45 · 1278 阅读 · 0 评论 -
23种设计模式C++实例之工厂方法模式
工厂模式有三种:简单工厂模式,工厂方法模式,抽象工厂模式,其中简单工厂模式属于23种设计模式,实例如下:#include using namespace std;/* * 不符合开闭原则,不是23种标准的设计模式 * */class Fruit { public: virtual ~Fruit() {} virtual void sayName() = 0;};原创 2015-12-11 19:23:40 · 1999 阅读 · 0 评论 -
23种设计模式C++实例之创建者模式
把建造不同类型房子的过程与客户端调用分类#include using namespace std;/* * 建造者模式 * 对象的创建和对象的表示分离 * */class House { public: void setFloor(string floor) { m_floor = floor; } void setWall(string wall原创 2015-12-11 19:32:13 · 1382 阅读 · 0 评论 -
23种设计模式C++实例之原型模式
原型模式就是让对象拥有自我拷贝的功能,方便备份对象数据或者创建对象时设置过多的参数。#include using namespace std;/* * 原型模式:让对象拥有自我复制的功能 * 注意深拷贝和浅拷贝 * */class Programmer{ public: virtual ~Programmer() {} virtual Programmer*原创 2015-12-11 19:34:37 · 3709 阅读 · 0 评论 -
23种设计模式C++实例之单例模式
饿汉式默认就会创建一个静态对象,在获取示例时直接返回该对象即可,缺点就是即使不用也会占用内存,而且线程安全。懒汉式在对象第一次获取对象的时候才创建对象,好处是在不需要创建对象是不占用内存;原创 2015-12-11 19:44:46 · 1395 阅读 · 0 评论 -
23种设计模式C++实例之装饰模式
装饰模式就是在不改变原有的类的情况下,给它添加功能。#include using namespace std;/* * 装饰模式:在不改变原类和使用继承的情况下,对类进行功能的增强 * 对类a功能的增强 * */class Car { public: virtual ~Car() {} virtual void go() = 0;};class Run原创 2015-12-16 10:58:40 · 1254 阅读 · 0 评论 -
23种设计模式C++实例之组合模式
#include #include /* * 组合模式 * 让单个对象和组合对象具有一致的接口 * */using namespace std;class IFile { public: virtual ~IFile() {} virtual void display() = 0; virtual int原创 2015-12-16 11:12:29 · 1618 阅读 · 0 评论 -
23种设计模式C++实例之外观模式
为各个不同的类提供统一的接口,然后通过外观模式将其组合起来,对外提供一个统一的接口。#include using namespace std;/* * 外观模式:将子系统中的一组接口提供一个一致的界面 * 外观模式定义了一个高层接口,这个接口使得这一子系统更加容易使用 * */class SubsysA { public: void dothing() {原创 2015-12-16 10:25:19 · 1203 阅读 · 0 评论 -
23种设计模式C++实例之代理模式
代理的目的是一般是为了防止直接访问某一个类,提供一种类似授权的机制。最典型的类中set和get方法实际上就是一种代理。#include using namespace std;/* * 代理模式:为其他对象提供一种代理,并以控制对这个对象的访问 * a类中b类,a类和b类中都实现协议类protocol * */class Shop{ public: virt原创 2015-12-16 10:54:08 · 1268 阅读 · 0 评论 -
23种设计模式C++实例之享元模式
为了避免产生过多的临时对象,创建一个对象,需要需要不同对象的时候设置不同的参数。#include #include using namespace std;/* * 享元模式 * 享元:共享元素 * 以共享的方式来避免大量拥有相同内容对象的开销 * 理解: * 对于经常使用且仅参数不同的对象,不是每次都重新创建一个不同的对象, * 而是创建一个对象之后,每次使用时原创 2015-12-16 11:16:23 · 1240 阅读 · 0 评论 -
23种设计模式C++实例之适配器模式
适配器模式目的为了向客户提供他们所需要的接口,在适配器内部再调用我们自己已经实现的接口。#include using namespace std;/* * 电压适配器 * 将220v适配到18v * */class Cur18v { public: virtual void useCur18v() = 0;};class Cur220原创 2015-12-16 10:48:32 · 1250 阅读 · 0 评论 -
23种设计模式C++实例之模板方法模式
【代码】23种设计模式C++实例之模板方法模式。原创 2016-08-10 23:35:25 · 1347 阅读 · 0 评论 -
23种设计模式C++实例之抽象工厂模式
抽象工厂模式在每一个系列的子系列中符合开闭原则,系列不符合。#include using namespace std;class Fruit { public: virtual ~Fruit() {} virtual void sayName() = 0;};class LocalApple: public Fruit { public: virtual void原创 2015-12-11 19:26:04 · 1452 阅读 · 0 评论