![](https://img-blog.csdnimg.cn/20201014180756757.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
设计模式
文章平均质量分 62
基于C++的设计模式的理解和实现
mj348940862
这个作者很懒,什么都没留下…
展开
-
编程设计模式中委托 和代理模式的区别
编程设计模式中委托 和代理模式什么区别?委托更接近于观察者模式。设计模式中,是没有委托模式的,委托是一种机制,用于事件的触发。在java中,实现观察者模式,观察者必须要实现update方法,在被观察者通知时,调用这个方法。观察者模式的缺点是,由于要实现观察者的update方法,所以,耦合比较严重,入侵性强。如果,之前写好的类,要成为一个被观察者,则必须要更改这个类。并且,这个类可能已经有了可以处理问题的方法,但是却还要实现方法。还有,就是语义上的缺点。update方法到底是啥意思呢?这个方法可能是实现通知原创 2022-03-02 16:27:15 · 1257 阅读 · 0 评论 -
C++代理模式
代理模式:为其它对象提供一种代理以控制这个对象的访问。在某些情况下,一个对象不适合或者不能直接引用另一个对象,而代理对象可以在客户端和目标对象之间起到中介作用。优点:职责清晰。真实的角色只负责实现实际的业务逻辑,不用关心其它非本职责的事务,通过后期的代理完成具体的任务。这样代码会简洁清晰。代理对象可以在客户端和目标对象之间起到中介的作用,这样就保护了目标对象。扩展性好。/** 关键代码:一个是真正的你要访问的对象(目标类),一个是代理对象,真正对象与代理对象实现同一个接口,先访问代理*原创 2022-03-01 20:53:19 · 290 阅读 · 0 评论 -
C++实现反射机制
1.前言反射(Reflection)是许多语言(如 C#,Java)都拥有的特性,用于在运行时获取类型信息,大大的提高了编程的灵活性,比如利用反射可以极大的简化 json/xml 解析、脚本绑定、属性编辑器等的实现。但是 C++ 并没有提供反射的支持,本文讨论在 C++ 中实现反射机制的一种方式。反射主要特点有以下几点:用map保存了字符串到动态类生成的函数指针的映射。使用类名注册,根据不同的类名字符串构造成不同的类对象。2.具体设计与实现2.1设计思路我的设计思路大致是这样的。(1)为需要原创 2022-02-09 16:48:02 · 2745 阅读 · 0 评论 -
设计模式C++实现—简单工厂模式、工厂模式、抽象工厂模式
简单工厂模式工厂模式属于创建型模式,大致可以分为三类,简单工厂模式、工厂方法模式、抽象工厂模式。听上去差不多,都是工厂模式。下面一个个介绍,首先介绍简单工厂模式,它的主要特点是需要在工厂类中做判断,从而创造相应的产品。当增加新的产品时,就需要修改工厂类。有点抽象,举个例子就明白了。有一家生产处理器核的厂家,它只有一个工厂,能够生产两种型号的处理器核。客户需要什么样的处理器核,一定要显示地告诉生产工厂。下面给出一种实现方案。enum CTYPE {COREA, COREB}; class Singl转载 2022-01-17 21:28:08 · 141 阅读 · 0 评论 -
设计模式-策略模式
策略模式策略模式是指定义一系列的算法,把它们一个个封装起来,并且使它们可相互替换。本模式使得算法可独立于使用它的客户而变化。也就是说这些算法所完成的功能一样,对外的接口一样,只是各自实现上存在差异。用策略模式来封装算法,效果比较好。下面以高速缓存(Cache)的替换算法为例,实现策略模式。什么是Cache的替换算法呢?简单解释一下, 当发生Cache缺失时,Cache控制器必须选择Cache中的一行,并用欲获得的数据来替换它。所采用的选择策略就是Cache的替换算法。下面给出相应的UML图。Repl转载 2022-01-13 14:28:16 · 107 阅读 · 0 评论 -
观察者模式C++实现
观察者模式是一个应用非常广的模式之一,定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新。当一个对象发生了变化,关注它的对象就会得到通知;这种交互也称为发布-订阅(publish-subscribe)。目标是通知的发布者,它发出通知时并不需要知道谁是它的观察者。比如发布者(电子杂志),订阅者有张三、张四、张五,这几个人就是观察者。发布者不关心有几个观察者,有更新时只管通知他们。观察者收到更新通知,更新自己的状态。观察者的一个实例 Model/Vie原创 2022-01-11 14:10:27 · 101 阅读 · 0 评论 -
【C++设计模式——享元模式 】
什么是享元模式?在GOF的《设计模式:可复用面向对象软件的基础》一书中对享元模式是这样说的:运用共享技术有效地支持大量细粒度的对象。我们采用围棋或者五子棋棋子来讲,如果每个棋子都new一个对象,就会存在大量细粒度的棋子对象,这对内存空间是一种考验,也是一种浪费。我们都知道,比如我在2013号房间和别人下五子棋,2014号房间也有人在下五子棋,并不会因为我在2013号房间,而别人在2014号房间,而导致我们的棋子是不一样的。这就是说,2013号房间和2014号房间的棋子都是一样的,所有的五子棋房间的棋子都原创 2021-12-06 15:54:48 · 228 阅读 · 0 评论