设计模式
你只在游戏中存在
这个作者很懒,什么都没留下…
展开
-
设计模式-命令模式
将一个请求封装为一个对象(命令本身),使发出请求的责任(命令发送方)和执行请求的责任(命令接收方)分割开。这样两者之间通过命令对象进行沟通,这样方便将命令对象进行储存、传递、调用、增加与管理。package main//1.命令接收方抽象类type Device interface { Open() //打开 Close() //关闭 VolumnUp() //音量+ VolumnDown()//音量- ChannelUp() //频道+ ChannelDown()//频道-}type原创 2022-04-15 18:10:57 · 177 阅读 · 0 评论 -
设计模式-责任链模式
责任链模式(chain of responsibility)是赫赫有名的GoF书中描述的23个经典模式之一。这个模式通过将请求的处理者组织成一个链条,有效避免请求发送者与多个请求处理者耦合在一起。package mainimport ( "fmt")type Handler func([]int) boolfunc IsQiDui(card []int) bool { fmt.Println("判断七对") //这里做具体的牌型判断 return true}func IsShi原创 2022-04-14 10:44:31 · 333 阅读 · 0 评论 -
设计模式-享元模式
享元模式主要是为了复用对象,节省内存。使用享元模式需要有两个前提:享元对象不可变:当享元模式创建出来后,它的变量和属性不会被修改系统中存在大量重复对象:这些重复对象可以使用同一个享元,内存中只存在一份,这样会节省大量空间。当然这也是为什么享元对象不可变的原因,因为有很多引用,变更的话会引起很多问题。package mainimport "fmt"/** * @Author: Jason Pang * @Description: 棋子类,有文案、颜色、规则,这三种不变属性 */type转载 2022-04-12 11:34:04 · 88 阅读 · 0 评论 -
基于lua的观察者模式应用:事件分发系统
local b = class()function B:on_money_change(money) print(money,"B recive event")endEventSystem:on(Event.MoneyChanged,B.on_money_change,{target = B})--定义回调函数和注册事件local c = class()function C:on_money_change(money) print(money,"C recive event")endEv原创 2021-08-31 20:09:13 · 286 阅读 · 0 评论 -
单例模式
定义:class Singleton{private: Singleton(){} Singleton(const Singleton& f){}//构造函数和拷贝构造函数设为私有public: static Singleton* getInstance(); static Singleton* m_instance;};Singleton* Singleton::m_instance=nullptr;//静态成员函数或者变量类外初始化//线.原创 2021-04-12 17:27:21 · 58 阅读 · 0 评论 -
构建器
定义:将一个复杂对象的构建与表示相分离,使得同样的构建过程(稳定)可以创建不同的表示(变化)//抽象类class House{public: House(){}//构造函数调用虚函数是静态绑定的};/*构造器*/class HouseBuilder(){public: House* GetResult() {return p;} virtual ~HouseBuilder()protected: House* p; virtual原创 2021-04-12 16:33:23 · 84 阅读 · 0 评论 -
原型模式
定义:使用原型实例指定创建对象的种类,然后通过拷贝这些原型创建新对象。使用在某些结构复杂的对象存在复杂的创建工作//抽象类class ISplitter{public: virtual void split()=0; virtual ISplitter* clone()=0;//通过克隆自己来创建对象 virtual ~ISplitter(){}};//具体类class BinarySplitter:public ISplitter{public: .原创 2021-04-12 15:07:59 · 51 阅读 · 0 评论 -
工厂模式和抽象工厂
定义:定义一个用于创建对象的接口,让子类决定实例化哪一个类。工厂模式使一个类的实例化延迟(目的:解耦手段:虚函数)到子类。要求:创建方法/参数一致class MainForm:public Form{ TextBox* txtFilePath; TextBox* txtFileNumber; ProgressBar* progressBar; SplitterFactory* factory;public: MainForm(SplitterFac.原创 2021-04-10 22:50:58 · 60 阅读 · 0 评论 -
设计模式-桥接模式
定义:将抽象部分(业务功能)与实现部分(平台实现)分离,使他们能够独立地变化。使用对象间的组合关系解耦了抽象和现实之间的绑定关系,使得抽象和实现可以沿着各自维度进行变化(子类化)。class Messager{protected: MessagerImp* messagerImp; Messager(MessagerImp* messagerImp):Messager(messagerImp){}public: virtual void Login(strin..原创 2021-04-09 23:03:37 · 138 阅读 · 0 评论 -
设计模式-装饰模式
定义:动态(组合)地给一个对象增加一些额外的职责。就增加功能而言,装饰模式比生成子类(继承)更为灵活(消除重复代码&减少子类个数)特点:即继承基类又组合基类class Stream{public: virtual char Read(int number)=0; virtual void Seek(int position)=0; virtual void Write(byte data)=0; virtual ~Stream();};class FileSt.原创 2021-04-09 17:01:57 · 61 阅读 · 0 评论 -
观察者模式
1. 观察者模式class FileSplitter//分割实现类{ string m_filePath; int m_fileNumber; vector<IProgress*> m_iprogress;//抽象通知机制 支持多个观察者public: FileSplitter(const string& filePath,int fileNumber): m_filePath(filepath),m_fileNumber(fileNumber){} void ad原创 2021-04-08 23:07:25 · 71 阅读 · 0 评论