
设计模式
常用设计模式介绍,C++语言实现
luoyayun361
不积跬步无以至千里
展开
-
C++设计模式--观察者模式(Observer)
概述观察者模式,定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新。适用场景以下任一情况下可以使用观察者模式:当一个抽象模型有两方面,其中一个方面依赖于另一个方面。将这二者封装在独立的对象中以使它们可以各自独立地改变和复用。当一个对象的改变需要同时改变其它对象,而不知道具体有多少对象有待改变。当一个对象必须通知其它对象,而它又不能假...原创 2019-04-14 22:11:13 · 491 阅读 · 0 评论 -
C++设计模式--抽象工厂模式
前言前面有两篇文章分别介绍了简单工厂模式和工厂方法模式,这两种模式都比较常见,今天介绍工厂模式的最后一种,抽象工厂模式。抽象工厂模式(Abstract Factory Pattern)是所有形态的工厂模式中最为抽象和最具一般性的一种形态。抽象工厂模式是指当有多个抽象角色时,使用的一种工厂模式。抽象工厂模式可以向客户端提供一个接口,使客户端在不必指定产品的具体的情况下,创建多个产品族中的产品对象...原创 2019-04-08 11:29:57 · 689 阅读 · 2 评论 -
C++设计模式--工厂方法模式
概述上一篇介绍了简单工厂模式,该模式集中了所有产品的创建逻辑,缺点就是违反了高内聚责任分配原则,而工厂方法模式正是为了解决这这样的问题,可以说,工厂方法模式是对简单工厂模式的进一步抽象和推广,而此模式的核心思想是封装类中不变的部分,提取其中个性化善变的部分为独立类,通过依赖注入以达到解耦、复用以及方便后期维护拓展的目的。UML 类图 IShape : 产品抽象基类,提供所有通用接口Re...原创 2019-03-19 08:27:32 · 356 阅读 · 0 评论 -
C++设计模式--简单工厂模式
概述工厂模式:封装对象的实现。它可能是所有设计模式中最有用的模式之一了。这里要说的是简单工厂模式,又称为静态方法工厂模式,属于创建性模式。其原理就是通过传入的参数来判断应该创建什么对象。UML 类图Factory :工厂类的核心,创建各种不同产品对象IShape: 产品抽象基类,提供所有通用接口Rectangle、Circle : 具体的产品实现适用场景工厂类负责创建的对象比...原创 2019-03-18 08:03:09 · 421 阅读 · 0 评论 -
C++设计模式--适配器模式
定义适配器(Adapter)又叫包装器(Wrapper),是一种类对象结构性模式,目的是将一个类的接口转换成客户希望的另外一个接口。Adapter 模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。分类适配器有两种实现方式,分别是类适配器和对象适配器。这两种实现方式不太一样。类适配器:通过多继承的方式来实现对象适配器:通过对象组合的方式来实现类适配器 对象适配器 ...原创 2019-03-16 23:50:49 · 323 阅读 · 0 评论 -
C++设计模式--模板方法模式
模板方法模式(Template Method)是定义一个操作中的算法框架,而将一些步骤延迟到子类中。模板方法使得子类可以不改变一个算法框架的结构即可重定义该算法的某些特定步骤。原创 2019-03-08 07:58:21 · 351 阅读 · 0 评论 -
C++设计模式--命令模式(Command)
概述命令模式的结构很简单,但是对于消除代码间的耦合却有着重要的影响。命令模式就是一个函数对象:一个作为对象的函数。通过将函数封装为对象,就能够以参数的额形式将其传递给其他函数或者对象,告诉它们在旅行请求的过程中执行特定的操作。命令模式根据以上定义,来看一个简单的示例:/** * 命令模式,消除代码间的耦合 */#include <iostream>#include ...原创 2019-03-05 07:44:56 · 2945 阅读 · 0 评论 -
C++设计模式--状态模式(state)
概述前面文章介绍了代理模式(在这里),代理模式和状态模式都提供一个代理类,从结构上看,可以认为代理模式只是状态模式的一个特例,不同之处在于,代理模式控制对其实现类的访问,而状态模式动态地改变其实现类,当发现大多数或者所有函数都存在条件代码时,这种模式很有用。状态模式简单来说,状态模式通过一个前端对象来使用后端实现对象履行其职责,在前端对象生存期期间,状态模式从一个实现对象到另一个实现对象进行...原创 2019-03-02 09:48:10 · 1267 阅读 · 0 评论 -
C++设计模式--单例模式(Singleton)及单例通用模板
概述C++中的单例模式应该是最简单的了,并且非常常见,在编码中经常会用到。那么,简单的总结下 C++中的单例模式写法,以及根据单例模式扩展后的一些写法,最后还有单例的通用模板,可用于快捷创建一个单例类。单例类创建一个单例模式的关键是防止他人获得任何控制其对象生存期的权利,也就是说不要让别人可以随便创建类对象,单例类在整个程序生存周期中至始至终就只有一个对象,为了做到这一点,必须要先把构造函数...原创 2019-03-02 08:53:29 · 2501 阅读 · 0 评论 -
C++设计模式--代理模式(Proxy)
前言C++相对其他编程语言来说算是比较难的了,相关知识点非常多,并且有些概念理解起来比较困难,对于初学者来说可能会感觉到非常痛苦。随着项目难度的升级,需要不断地优化框架从而使整个结构更具有扩展性,那么就要具备更多更深的 C++知识点才能搞定了,而设计模式是当今已经成为面向对象程序设计的几乎所有必须掌握的知识点,可以将设计模式看做解决某一类特定问题的特别巧妙和具有洞察力的方法。所以这段时间重温 C...原创 2019-03-01 08:04:02 · 519 阅读 · 0 评论