![](https://img-blog.csdnimg.cn/20201014180756780.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
设计模式
梦话王子
这个作者很懒,什么都没留下…
展开
-
C++设计模式心得体会
关于GoF提到的23种设计模式前面的博文几乎全都涉及到了,只是根据我们实际开发中使用的频率不同,我的侧重点也有所不同。学完这些所有的设计模式之后,我也有一些自己的心得体会,下面简单的来说一说。学习过程中了解到了设计模式有八大原则:依赖倒置原则,开放封闭原则,单一职责原则,Liskov替换原则,接口隔离原则,对象组合优于类继承,封装变化点,面向接口编程。这些原则有些很抽象,有些很具体,具体的东西...原创 2020-03-12 17:19:43 · 302 阅读 · 0 评论 -
C++不常用设计模式梳理
C++常用设计模式的相关博文到这里就整理的差不多了,我们实际工作中常用的设计模式就是我前面整理的那些。GoF所提到的23种设计模式还有一些我没有整理到,包括:享元模式、建造者模式、外观模式、中介者模式、备忘录模式、迭代器模式、职责链模式、访问者模式、命令模式、解释器模式。这些模式因为各种各样的原因在我们的工作中很少会遇到,所以这篇博文就先对这些剩下的模式做一个简单的介绍。1,享元模式定义:...原创 2020-03-11 14:32:25 · 293 阅读 · 0 评论 -
C++常用设计模式之:原型模式
原型模式是一种不太常见的创建型模式,我们平时的工作中几乎不会遇到这种模式,但是在一些框架设计中会用到,这里我们只做了解即可。它解决的也是对象创建时的问题,如果从代码层面上来看,它可以看作是工厂方法的一种巧妙的变化。原型模式的定义:是一种创建型设计模式,允许一个对象再创建另外一个可定制的对象,而无需知道任何创建的细节。(说白了就是调用对象的拷贝构造函数来创建一个新的对象)既然上面说到它是工厂...原创 2020-03-10 16:36:04 · 973 阅读 · 0 评论 -
C++常用设计模式之:单例模式
单例模式没啥好说解说的,这个模式太经典了,以至于即使你没有接触过设计模式也一定听过单例模式的大名。网上关于单例模式的例子有很多,这里就算做一个归纳总结吧!单例模式的定义:保证一个类仅有一个实例,并提供一个该实例的全局访问点。UML结构图如下:网络上常见的单例模式实现,有以下几种://类的声明class Singleton{private: Singleton...原创 2020-03-10 08:45:12 · 275 阅读 · 0 评论 -
C++常用设计模式之:组合模式
组合模式是一个特征非常鲜明的设计模式,特点就是它的定义一点也不抽象!!!。组合模式定义:将对象组合成树形结构以表示“部分-整体”的层次结构。组合模式对单个对象(叶子节点)和组合对象(树节点)的使用具有一致性(送分题啊!同志们!一致性是啥,就是虚接口呗!)。还用啥现实中的例子来说明,这就是妥妥的数据结构中的树形结构啊!人家定义都直接点明了。UML结构图如下:下面我用伪码来表述上面...原创 2020-03-09 15:08:49 · 1098 阅读 · 0 评论 -
C++常用设计模式之:状态模式
状态模式就是升级版的策略模式!它解决的也是程序中常见的条件可能变化的if/else或者switch/case语句,不同的是状态模式在状态发生改变时,其内部会使其指向下一种状态,无需调用者做出选择。这样解释好像还是太抽象了,算了,先看定义吧。状态模式的定义:允许一个对象在其内部状态改变时改变它的行为。从而使对象看起来似乎修改了其行为。看看上面的定义,是不是更抽象了...还是用实际程序中例...原创 2020-03-09 11:32:05 · 249 阅读 · 0 评论 -
C++常用设计模式之:代理模式
代理模式是一种常见的接口隔离的模式,从某种意义上来说,我觉得它和适配器模式很像,最起码它两的UML结构图就很像。使用到的思想也是用组合和继承的方式来解决问题。代理模式的定义:为其他对象提供了一种代理,以控制对这个对象的访问。在某些情况下,一个对象不适合或者不能直接引用另一个对象,而代理对象可以在客户端和目标对象之间起到中介的作用(这里的中介作用可以类比适配器模式中的那个适配器,在代理模式中就是...原创 2020-03-09 09:54:17 · 138 阅读 · 0 评论 -
C++常用设计模式之:抽象工厂
抽象工厂同样是一种常见的创建型模式,它也是用于解决程序中创建对象使用new而产生的紧耦合的问题。那它与之前说到的工厂方法有什么不同呢?工厂方法创建的是一个单一的对象,而使用抽象工厂可以创建一系列对象。抽象工厂的定义:可以提供向使用者一个接口,这个接口可以创建一系列具有相关性的对象。结合之前说的工厂方法我们来看看现实中的例子:还是以家电为例,在工厂方法中我们得到了一个具体品牌的家电,在实际生...原创 2020-03-06 16:20:13 · 364 阅读 · 0 评论 -
C++常用设计模式之:桥接模式
桥接模式也是一个很特殊的模式,它也是既用到了继承也用到的了组合的模式,看到这里是不是觉得和之前说过的装饰器模式非常的相似?它们确实有一些共同的地方,即都是利用组合的方式解决了继承带来的子类规模过大的问题。不同点就是装饰器模式是为了给一个对象增加一些额外的职责,而桥接模式其实是解决了两个或者多个类不同方向演化(简单来说就可以理解为两个类的演化)的问题,而这些类本身也是有着某种联系。这样解释好像还是太...原创 2020-03-06 14:22:10 · 151 阅读 · 0 评论 -
C++常用设计模式之:适配器模式
适配器模式是软件开发中常用的模式之一,比如我们之前写的类提供的接口(老的接口)在新的环境下已经不合适了,那么我们怎么改变才能使老的接口适配现在新的接口呢?之前说过设计模式中常用的手法就是组合和继承,这在适配器模式中得到了很好的体现。首先,我们要从新的接口继承一个类,这个类就是适配器类(为什么要从新接口继承?那是为了遵循新接口提供的接口规范),那这个适配器类要怎么去适配老的接口呢?很显然的办法是用组...原创 2020-03-06 10:33:55 · 141 阅读 · 0 评论 -
C++常用设计模式之:简单工厂
其实简单工厂并不属于23设计模式之中,不过在实际应用中因为其简单方便理解所以也经常使用。而且在实际应用中很多人分不清简单工厂和策略模式的区别,这里也会简单的说一下我的理解。简单工厂的定义:属于创建型模式的一种,是由一个工厂对象决定创建出哪一种产品类的实例。用实际应用来举例,就拿制造一部手机为例来说明吧。UML结构图如下: ...原创 2020-03-05 14:45:42 · 181 阅读 · 0 评论 -
C++常用设计模式之:工厂方法
工厂方法是创建对象时最常见的方法之一,我们在程序中创建一个对象往往会使用到new,在new的左边可以是一个抽象的基类,而new的右边则必须是一个具体的类,这种紧耦合的关系不是我们想要的。工厂方法就是用于解除这种耦合关系的办法!它是怎么做的了?用new无法避免的话,那就返回一个对象呗。工厂方法的定义:是一种常见的对象创建型设计模式,此模式的核心思想是封装类中不变的部分(稳定的),提取其中个性化善...原创 2020-03-05 10:48:40 · 189 阅读 · 0 评论 -
C++常用设计模式之:策略模式
策略模式也是常见的设计模式之一,一般在程序中如果遇到条件可能变化的if/else或者switch/case语句,就可以想想是否可以用策略模式来替换了。策略模式的定义:定义了一系列算法,把它们一个个封装起来,并且使它们可以相互替换(变化的部分)。策略模式可以使算法独立于使用算法的客户端(稳定的部分)。在实际应用中我们也是用策略模式来解决选择的问题。例如:我们周末选择哪项体育运动的问题,是打乒...原创 2020-03-05 09:29:12 · 252 阅读 · 0 评论 -
C++常用设计模式之:观察者模式
观察者模式是23种设计模式中很重要也很常用的模式,在软件开发中我们经常会遇到。观察者模式的定义:定义了对象间的一对多的依赖关系,让多个观察者对象同时监听某一个主题对象(被观察者)。当主题对象的状态发生更改时,会通知所有观察者,让它们能够自动更新。在实际的应用中我们常常使用观察者模式来解决软件中的消息通信的问题。例如,我们有一个QT编写的QWidget应用,这个应用包含了多个QWidget窗...原创 2020-03-04 14:41:35 · 170 阅读 · 0 评论 -
C++常用设计模式之:装饰器模式
装饰器模式是非常特殊的一个模式,它既用到了继承也用到了组合,而继承和组合也是设计模式中常用的手法。装饰器模式的定义:是在不比改变原来类文件和使用继承的情况下,动态地扩展一个对象的功能。它是通过创建一个包装对象,也就是装饰来包裹真实的对象。用现实中的列子来类比,例如:我们喝奶茶或者果汁的时候,可以添加不同的辅料,椰果、珍珠、冰块、糖等等。通过这些原料我们可以自己组合成自己喜爱的饮料。UM...原创 2020-03-04 16:37:25 · 317 阅读 · 0 评论 -
C++常用设计模式之:模板方法
写这篇博客的目的是为了更加深入的理解设计模式,以便在以后的工作中能够利用设计模式写出简洁、高效的代码。这里我首先推崇的是李建忠老师的c++设计模式视频课程,李老师的课程从实际代码为切入点,利用重构的方式来讲解设计模式,使我受益匪浅!这是我见过目前最好的讲解设计模式的视频课程,在课程中李老师用自己的话来还原、总结了设计模式中那些晦涩和抽象的部分,让人茅塞顿开!强烈推荐学习!个人觉得李老师所说的找...原创 2020-03-04 13:37:25 · 270 阅读 · 0 评论