
设计模式
文章平均质量分 71
Inkred
这个作者很懒,什么都没留下…
展开
-
c++设计模式之享元模式
。特别是对于大量轻量级(细粒度)的对象,比如在文档编辑器的设计过程中,我们如果为没有字母创建一个对象的话,系统可能会因为大量的对象而造成存储开销的浪费。例如一个字母“a”在文档中出现了100000次,而实际上我们可以让这一万个字母“a”共享一个对象,当然因为在不同的位置可能字母“a”有不同的显示效果(例如字体和大小等设置不同),在这种情况我们可以为将对象的状态分为“外部状态”和“内部状态”,将可以被共享(不会变化)的状态作为内部状态存储在对象中,而外部对象(例如上面提到的字体、大小等)我们可以在适当的时候将原创 2020-11-07 21:36:34 · 263 阅读 · 0 评论 -
如何写一个C++的安全单例模板类
template<class T>class SingletonTemplate{public: static T *getInstance(); static void freeInstance();protected: SingletonTemplate(){} ~SingletonTemplate(){}private: SingletonTemplate(const SingletonTemplate&); Singl...原创 2020-10-29 20:22:01 · 164 阅读 · 0 评论 -
c++设计模式,观察者模式理解及demo实现
Observer模式要解决的问题为:建立一个一(Subject)对多(Observer)的依赖关系,并且做到当“一”变化的时候,依赖这个“一”的多也能够同步改变。最常见的一个例子就是:对同一组数据进行统计分析时候,我们希望能够提供多种形式的表示(例如以表格进行统计显示、柱状图统计显示、百分比统计显示等)。这些表示都依赖于同一组数据,我们当然需要当数据改变的时候,所有的统计的显示都能够同时改变。Observer模式就是解决了这一个问题。当对象间存在一对多关系时,则使用观察者模式(Observer Patt原创 2020-10-18 19:27:38 · 222 阅读 · 0 评论 -
c++ 设计模式之策略模式及实现demo
关键在于将算法的逻辑抽象接口(DoAction)封装到一个类中(Context),再通过委托的方式具体的算法实现委托给具体的strategy类来实现(ConcreteStrategyA类)Context封装角色它也叫做上下文角色,起承上启下封装作用,屏蔽高层模块对策略、算法的直接访问,封装可能存在的变化。Strategy抽象策略角色策略、算法家族的抽象,通常为接口,定义每个策略或算法必须具有的方法和属性。ConcreteStrategy具体策略角色实现抽象策略中的操作,该类...原创 2020-10-15 13:21:46 · 144 阅读 · 0 评论 -
C++设计模式-责任链模式理解及demo
责任链模式中,ConcreteHandler将自己的后继对象(向下传递信息的对象)记录在自己的后继表中,当一个请求到来时,ConcreteHandler会先检查看自己有没有匹配的处理程序,如果有就自己处理,否则传递给它的后继处理,ConcreteHandler只是简单的检查看自己有没有后继,有的话将请求传递给后继进行处理,没有的话就自己处理。#pragma onceclass Handle{public: Handle(); Handle(Hand...原创 2020-10-14 13:23:32 · 126 阅读 · 0 评论 -
C++代理模式理解及实现demo
Proxy模式又叫做代理模式 ,它可以为其他对象提供一种代理以控制对这个对象的访问。所谓代理,是指具有与代理(被代理的对象)具有相同的接口的类,客户端必须通过代理与被代理的目标类交互,而代理一般在交互的工程中(交互前后),进行某些特别的处理。以下集中情况下可以用Proxy模式解决问题:1)创建开销大的对象时候,比如显示一幅大的图片,我们将这个创建的过程交给代理去完成,称之为虚代理(Virtual Proxy);2)为网络上的对象创建一个局部的本地代理,比如要操作一个网络上的一个对象.原创 2020-10-13 13:21:58 · 172 阅读 · 0 评论