![](https://img-blog.csdnimg.cn/20201014180756923.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
设计模式
Kuany_
这个作者很懒,什么都没留下…
展开
-
C++设计模式13——建造者(Bulider)模式
C++设计模式13——建造者(Bulider)模式1. 建造者(Bulider)模式介绍2. 为了方便理解,举个例子3. 建造者(Bulider)模式优缺点1. 建造者(Bulider)模式介绍定义:指将一个复杂对象的构造与它的表示分离,使同样的构建过程可以创建不同的表示。何时使用:一些基本部件不会变,而其组合经常变化的时候。应用实例: =去肯德基,汉堡、可乐、薯条、炸鸡翅等是不变的,而其组合是经常变化的,生成出所谓的"套餐"。关键代码:建造者:创建和提供实例,指挥者:管理建造出来的实例的依赖关原创 2020-07-25 18:22:16 · 271 阅读 · 0 评论 -
C++设计模式12——原型(Prototype)模式
C++设计模式12——原型(Prototype)模式1. 原型(Prototype)模式介绍2. 为了方便理解,举个例子3. 原型(Prototype)模式优缺点1. 原型(Prototype)模式介绍定义:用一个已经创建的实例作为原型,通过复制该原型对象来创建一个和原型相同或相似的新对象。其实就是从一个对象再创建另外一个可定制的对象,而且不需要知道任何创建的细节而已。如何使用:要提供自己的拷贝构造函数进行深拷贝,方便用户,还应该提供一个clone方法(实际就是去调用拷贝构造函数)关键代码:原创 2020-07-25 17:40:08 · 491 阅读 · 0 评论 -
C++设计模式11——命令(Command)模式
C++设计模式11——命令(Command)模式1. 命令(Command)模式介绍2. 为了方便理解,举个例子3. 命令(Command)模式优缺点1. 命令(Command)模式介绍定义: 将一个请求封装为一个对象,使发出请求的责任和执行请求的责任分割开。这样两者之间通过命令对象进行沟通,这样方便将命令对象进行储存、传递、调用、增加与管理。关键代码:定义三个角色:1、received 真正的命令执行对象 2、Command 3、invoker 使用命令对象的入口使用场景:认为是命令的地方都可原创 2020-07-25 16:14:32 · 2021 阅读 · 0 评论 -
C++设计模式10——外观(Facade)模式
C++设计模式10——外观(Facade)模式1. 外观(Facade)模式介绍2. 为了方便理解,举个例子3. 外观(Facade)模式优缺点1. 外观(Facade)模式介绍定义:是一种通过为多个复杂的子系统提供一个一致的接口,而使这些子系统更加容易被访问的模式。关键代码:在客户端和复杂系统之间再加一层,这一层将调用顺序、依赖关系等处理好。应用实例: 1、去医院看病,可能要去挂号、门诊、划价、取药,让患者或患者家属觉得很复杂,如果有提供接待人员,只让接待人员来处理,就很方便。2、打开家里各种智能原创 2020-07-25 12:04:43 · 414 阅读 · 1 评论 -
C++设计模式9——代理(Proxy)模式
C++设计模式9——代理(Proxy)模式1. 代理(Proxy)模式介绍2. 为方便理解,举个例子3. 代理(Proxy)模式优缺点1. 代理(Proxy)模式介绍定义:由于某些原因需要给某对象提供一个代理以控制对该对象的访问。这时,访问对象不适合或者不能直接引用目标对象,代理对象作为访问对象和目标对象之间的中介。主要解决:在直接访问对象时带来的问题,比如说:要访问的对象在远程的机器上。在面向对象系统中,有些对象由于某些原因(比如对象创建开销很大,或者某些操作需要安全控制,或者需要进程外的访问),直原创 2020-07-24 22:10:34 · 710 阅读 · 0 评论 -
C++设计模式8——单例(Singleton)模式
C++设计模式8——单例(Singleton)模式1. 单例(Singleton)模式介绍2. 看代码,一目了然1. 单例(Singleton)模式介绍定义:指一个类只有一个实例,且该类能自行创建这个实例的一种模式。例如,Windows 中只能打开一个任务管理器特点:单例类只有一个实例对象;该单例对象必须由单例类自行创建;单例类对外提供一个访问该单例的全局访问点;单例模式创建步骤:类中:构造函数私有化;增加静态私有的当前类的指针变量;提供静态对外接口,可以让用户获得单例对象;原创 2020-07-24 21:23:15 · 302 阅读 · 0 评论 -
设计模式笔记总览
设计模式笔记总览学编程设计模式前必须要先掌握的知识——类图和类之间的关系设计模式七大原则C++设计模式1——模板方法(Template Method)模式C++设计模式2——策略(Strategy)模式C++设计模式3——观察者(Observer)模式C++设计模式4——装饰(Decorator)模式C++设计模式5——桥接(Bridge)模式C++设计模式6——工厂方法(FactoryMethod)模式C++设计模式7——抽象工厂(AbstractFactory)模式未完待续…原创 2020-07-19 20:01:55 · 261 阅读 · 0 评论 -
C++设计模式7——抽象工厂(AbstractFactory)模式
C++设计模式7——抽象工厂(AbstractFactory)模式1. 抽象工厂(AbstractFactory)模式介绍2. 为方便理解,举个例子3. 抽象工厂(AbstractFactory)模式优缺点1. 抽象工厂(AbstractFactory)模式介绍定义:提供一个接口,让该接口负责创建一系列“相关或者相互依赖的对象”,无需指定它们具体的类。使用条件:系统中有多个产品族,每个具体工厂创建同一族但属于不同等级结构的产品。系统一次只可能消费其中某一族产品,即同族的产品一起使用。模式的结原创 2020-07-19 17:31:55 · 376 阅读 · 0 评论 -
C++设计模式6——工厂方法(FactoryMethod)模式
C++设计模式6——工厂方法(FactoryMethod)模式1. 工厂方法(FactoryMethod)模式介绍2. 为了方便理解,这里举一个例子3. 工厂方法(FactoryMethod)模式的优缺点1. 工厂方法(FactoryMethod)模式介绍定义: 定义一个用于创建对象的接口,让子类决定实例化哪一个类。Factory Method使得一个类的实例化延迟(目的:解耦,手段:虚函数)到子类。动机: 在软件系统中,经常面临着创建对象的工作;由于需求的变化,需要创建的对象的具体类型经原创 2020-07-19 15:25:40 · 266 阅读 · 0 评论 -
C++设计模式5——桥接(Bridge)模式
C++设计模式5——桥接(Bridge)模式1. 桥接(Bridge)模式介绍1. 桥接(Bridge)模式介绍定义:将抽象部分(业务功能)与实现部分(平台实现)分离,使它们都可以独立地变化。主要解决:在有多种可能会变化的情况下,用继承会造成类爆炸问题,扩展起来不灵活。何时使用:实现系统可能有多个角度分类,每一种角度都可能变化。如何解决:把这种多角度分类分离出来,让它们独立变化,减少它们之间耦合。关键代码:抽象类依赖实现类。模式的结构:桥接(Bridge)模式包含以下主要角色。抽象化(原创 2020-07-18 23:49:07 · 328 阅读 · 0 评论 -
C++设计模式4——装饰(Decorator)模式
C++设计模式4——装饰(Decorator)模式1. 装饰(Decorator)模式介绍2. 为了方便理解,这里举一个例子3. 装饰(Decorator)模式优缺点1. 装饰(Decorator)模式介绍定义:动态(组合)地给一个对象增加一些额外的职责。就增加功能而言,Decorator模式比生成子类(继承)更为灵活(消除重复代码 & 减少子类个数)。主要解决:一般的,我们为了扩展一个类经常使用继承方式实现,由于继承为类引入静态特征,并且随着扩展功能的增多,子类会很膨胀。何时使用:在原创 2020-07-18 18:10:32 · 307 阅读 · 0 评论 -
C++设计模式3——观察者(Observer)模式
C++设计模式3——观察者(Observer)模式1. 观察者(Observer)模式定义、结构与类图2. 为了方便理解,这里举一个例子2.1 例子一2.2 例子二(比较好理解)3. 观察者(Observer)模式优缺点1. 观察者(Observer)模式定义、结构与类图定义: 定义对象间的一种一对多(变化)的依赖关系,以便当一个对象(Subject)的状态发生改变时,所有依赖于它的对象都得到通知并自动更新。模式的结构:观察者模式的主要角色如下。抽象主题(Subject)角色:也叫抽象目标原创 2020-07-18 11:57:06 · 482 阅读 · 0 评论 -
C++设计模式2——策略(Strategy)模式
C++设计模式2——策略(Strategy)模式1. 策略(Strategy)模式模板定义和类图2. 为了方便理解,这里举一个例子3. 策略(Strategy)模式优缺点1. 策略(Strategy)模式模板定义和类图 定义一系列算法,把它们一个个封装起来,并且使它们可互相替换(变化)。该模式使得算法可独立于使用它的客户程序(稳定)而变化(扩展,子类化)。类图:红色部分为稳定,蓝色为非稳定部分 策略模式是准备一组算法,并将这组算法封装到一系列的策略类里面,作为一个抽象策略类的子类。策略模式的原创 2020-07-17 21:44:27 · 342 阅读 · 0 评论 -
C++设计模式1——模板方法(Template Method)模式
C++设计模式1——模板方法(Template Method)模式1. 模板方法(Template Method)模式的定义和类图如下2. 为了方便理解,这里举一个例子3. 模板方法(Template Method)模式的优缺点1. 模板方法(Template Method)模式的定义和类图如下 定义一个操作中的算法的骨架 (稳定),而将一些步骤延迟(变化)到子类中。Template Method使得子类可以不改变(复用)一个算法的结构即可重定义(override 重写)该算法的某些特定步骤。原创 2020-07-17 16:51:21 · 432 阅读 · 0 评论 -
设计模式七大原则
设计模式七大原则1. 设计模式的目的2. 设计模式七大原则2.1 单一职责原则(Single Responsibility Principle, SRP)2.2 接口隔离原则(Interface Segregation Principle, ISP)2.3 依赖倒转原则(Dependency Inversion Principle, DIP)2.4 里氏代换原则(Liskov Substitution Principle, LSP)2.5 开闭原则(Open-Closed Principle, OCP)2.原创 2020-07-17 15:47:35 · 301 阅读 · 0 评论 -
学编程设计模式前必须要先掌握的知识——类图和类之间的关系
学编程设计模式前必须要先掌握的知识——类图1. 类2. 接口3. 类图4. 类之间的关系4.1 依赖关系4.2 关联关系4.3 聚合关系4.4 组合关系4.5 泛化关系4.6 实现关系之前只了解设计模式的一些皮毛,但是整体看文章和一些设计模式的基础知识的时候总会有一些名为“类图”的东西首先介绍某设计模式的各结构之间的关系,下面对类图进行一下学习,更方便的去阅读设计模式的一些文章吧。1. 类类(Class)是指具有相同属性、方法和关系的对象的抽象,它封装了数据和行为,是面向对象程序设计(OOP)的基础,原创 2020-07-17 13:25:57 · 556 阅读 · 0 评论