![](https://img-blog.csdnimg.cn/20201014180756757.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
设计模式
smallerxuan
这个作者很懒,什么都没留下…
展开
-
《设计模式》学习笔记——装饰模式
装饰模式(Decorator Pattern)指的是在不必改变原类文件和使用继承的情况下,动态地扩展一个对象的功能.它是通过创建一个包装对象,也就是装饰来包裹真实的对象。DecoratorPattern.h#pragma once#include<iostream>#include<string>class Car{public: virtual ...原创 2018-10-28 07:42:05 · 5884 阅读 · 0 评论 -
《设计模式》学习笔记——状态模式
在状态模式(State Pattern)中,类的行为是基于它的状态改变的。这种类型的设计模式属于行为型模式。在状态模式中,我们创建表示各种状态的对象和一个行为随着状态对象改变而改变的 context 对象。意图: 允许对象在内部状态发生改变时改变它的行为,对象看起来好像修改了它的类。主要解决: 对象的行为依赖于它的状态(属性),并且可以根据它的状态改变而改变它的相关...原创 2018-10-29 08:12:31 · 10153 阅读 · 0 评论 -
《设计模式》学习笔记——解释器模式
解释器模式(Interpreter Pattern)提供了评估语言的语法或表达式的方式,它属于行为型模式。这种模式实现了一个表达式接口,该接口解释一个特定的上下文。这种模式被用在 SQL 解析、符号处理引擎等。意图: 给定一个语言,定义它的文法表示,并定义一个解释器,这个解释器使用该标识来解释语言中的句子。主要解决: 对于一些固定文法构建一个解释句子的解释器。何...原创 2018-10-29 08:17:32 · 3890 阅读 · 0 评论 -
《设计模式》学习笔记——迭代器模式
迭代器模式(Iterator Pattern)用于顺序访问集合对象的元素,不需要知道集合对象的底层表示。迭代器模式属于行为型模式。IteratorPattern.h#pragma once#include<iostream>#include<string>// 模拟对象typedef int Object;#define SIZE 5...原创 2018-10-29 08:21:04 · 4512 阅读 · 0 评论 -
《设计模式》学习笔记——开闭原则
开闭原则(Open Close Principle)的关键在于对扩展开放,对修改关闭。在程序需要进行拓展的时候,不能去修改原有的代码,而是增加新的代码。使程序的扩展性好,易于维护和升级。接口和抽象类的使用能达到这种效果。以下的代码通过模拟一个银行存钱业务,来进行举例说明:BankWorker.h#pragma once#include<iostream>#includ...原创 2018-10-24 08:15:51 · 1631 阅读 · 0 评论 -
《设计模式》学习笔记——依赖倒转原则
依赖倒转原则强调针对接口编程,依赖于抽象而不依赖于具体。也就是说高层模块不应该依赖于低层模块,而是二者都应该依赖于抽象接口层。依赖倒转原则的目的在于把高层次组件和低层次组件解耦,高层次组件依赖于接口层实现,低层次组件也依赖于接口层实现,通过这种方式以谋求重用不同的低层组件的实现。以下的代码案例以组装电脑这一场景进行举例说明:Computer.h#pragma once#incl...原创 2018-10-24 08:55:54 · 591 阅读 · 0 评论 -
《设计模式》学习笔记——单例模式
单例模式(SingletonPattern)是一种对象创建模型,使用单例模式可以保证一个类只生成一个对象实例,即在整个程序的生命周期内,该类的实例对象只存在一个。单例模式(SingletonPattern)保证一个类只有一个实例存在,同时提供能对该实例加以访问的全局访问方法。实现单例模式的常用步骤: 1、构造函数私有化 2、提供一个全局的静态方法(全局访问点...原创 2018-10-24 09:14:59 · 3924 阅读 · 0 评论 -
《设计模式》学习笔记——静态工厂模式
静态工厂模式(StaticFactoryMethod)又叫做简单工厂模式,属于创建型模式但不属于23种GOF设计模式之一。简单工厂模式是由一个工厂对象决定创建出哪一种产品类的实例。简单工厂模式是工厂模式家族中最简单实用的模式,可以理解为是普通工厂模式的一个特殊实现。以下代码以静态水果工厂为例进行举例说明:StaticFactoryMethod.h#pragma once#i...原创 2018-10-24 09:27:10 · 2723 阅读 · 0 评论 -
《设计模式》学习笔记——工厂模式
工厂模式(FactoryPattern)与简单工厂模式相比较,最大的不同在于对工厂本身做了一层抽象,工厂实例通过抽象工厂来产生。在这种模式下,可以产生不同的工厂,不同的工厂又能够生产不同的产品。 FactoryPattern.h#pragma once#include<iostream>#include<string>class Fruit ...原创 2018-10-24 09:44:49 · 1687 阅读 · 0 评论 -
《设计模式》学习笔记——抽象工厂模式
抽象工厂模式(AbstractFactory)和工厂模式的区别在于抽象工厂可以生产一个产品族。抽象工厂模式是所有形态的工厂模式中最为抽象和最具一般性的一种形态。抽象工厂模式是指当有多个抽象角色时,使用的一种工厂模式。 AbstractFactory.h#pragma once#include<iostream>#include<string>c...原创 2018-10-24 09:50:29 · 4457 阅读 · 2 评论 -
《设计模式》学习笔记——建造者模式
建造者(生成器)模式(Builder)是用于将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。在建造者模式中主要拥有以下角色: Builder: 为创建产品各个部分,统一抽象接口 CouncreteBuilder: 具体的创建产品的各个部分 Director: 构造一个使用Builder接口的对象 ...原创 2018-10-25 05:58:36 · 3174 阅读 · 0 评论 -
《设计模式》学习笔记——原型模式
原型模式(Prototype)是一种创建型设计模式。原型模式允许一个对象再创建另外一个可定制的对象,根本无需知道任何如何创建的细节。工作原理: 通过将一个原型对象传给那个要发动创建的对象,这个要发动创建的对象通过请求原型对象拷贝它们自己来实施创建。使用场景是:让一个复杂的对象拥有自我复制功能,统一一套接口值得注意的是:克隆方法一定要注意深拷贝浅拷贝问题 Prototype.h...原创 2018-10-25 05:58:50 · 1573 阅读 · 0 评论 -
《设计模式》学习笔记——备忘录模式
备忘录模式(Memento Pattern)保存一个对象的某个状态,以便在适当的时候恢复对象。备忘录模式属于行为型模式。意图: 在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。主要解决: 所谓备忘录模式就是在不破坏封装的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。 这样可以在以后将对象恢复到原先保存的状态。何时使用...原创 2018-10-29 08:03:53 · 1314 阅读 · 0 评论 -
《设计模式》学习笔记——观察者模式
当对象间存在一对多关系时,则使用观察者模式(Observer Pattern)。比如,当一个对象被修改时,则会自动通知它的依赖对象。观察者模式属于行为型模式。用于定义对象间一对多的关系意图: 定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新。主要解决: 一个对象状态改变给其他对象通知的问题,而且要考虑到易用和...原创 2018-10-29 07:58:28 · 1829 阅读 · 0 评论 -
《设计模式》学习笔记——概述
一、起源 在 1994 年,《Design Patterns - Elements of Reusable Object-Oriented Software》这本由 Erich Gamma、Richard Helm、Ralph Johnson 和 John Vlissides 四人合著的书出版了,在这本书中首次提出了软件开发中设计模式的概念。二、基本原则对接口编程而不是对...原创 2018-10-24 01:42:42 · 577 阅读 · 0 评论 -
《设计模式》学习笔记——适配器模式
适配器模式(Adapter Pattern)是作为两个不兼容的接口之间的桥梁。 将一个类的接口转换成另一个类的接口,使原本因为接口不兼容的类能够相互工作。 这种类型的设计模式属于结构型模式,它结合了两个独立接口的功能。 这种模式涉及到一个单一的类,该类负责加入独立的或不兼容的接口功能。AdapterPattern.h#pragma once#include<iostream>...原创 2018-10-28 07:46:27 · 3679 阅读 · 0 评论 -
《设计模式》学习笔记——桥接模式
Bridge Pattern被称之为桥接模式,属于构造型模式。Bridge Pattern基于类的最小设计原则,通过使用封装、聚和以及继承等行为来让不同的类承担不同的责任。它的主要特点是把抽象类与行为实现分离开来,从而可以保持各个部分的独立性以及对应它们的功能扩展 。Brige.h#pragma once#include<iostream>#include<stri...原创 2018-10-28 07:51:31 · 1583 阅读 · 0 评论 -
《设计模式》学习笔记——组合模式
组合模式(Composite Pattern)将对象组合成树形结构以表示"部分-整体"的层次结构,组合模式使得用户对单个对象和组合对象的使用具有一致性。掌握组合模式的重点是要理解清楚 "部分/整体" 还有 "单个对象" 与 "组合对象" 的含义。组合模式可以让客户端像修改配置文件一样简单的完成本来需要流程控制语句来完成的功能。CompositePattern.h#pragma once...原创 2018-10-28 07:55:43 · 2199 阅读 · 0 评论 -
《设计模式》学习笔记——外观模式
外观模式(Facade Pattern),亦称"过程模式"。外观模式为一组具有类似功能的类群,比如类库,子系统等,提供一个一致的简单的界面。这个简单的界面被称之为facade。适用于:为子系统统一一套接口,使子系统更加容易使用。 Facade.h#pragma once#include<iostream>#include<string>// 子系统...原创 2018-10-28 08:00:26 · 3503 阅读 · 0 评论 -
《设计模式》学习笔记——享元模式
享元模式(Flyweight Pattern)是一种软件设计模式。 它使用共享物件,用来尽可能减少内存使用量以及分享资讯给尽可能多的相似物件;适合用于当大量物件只是重复因而导致无法令人接受的使用大量内存。通常物件中的部分状态是可以分享。常见做法是把它们放在外部数据结构,当需要使用时再将它们传递给享元。享元模式通过共享的方式,高效的支持大量的细粒度的操作。 FlyweightPa...原创 2018-10-28 08:04:54 · 6570 阅读 · 0 评论 -
《设计模式》学习笔记——模板模式
在模板模式(Template Pattern)中,一个抽象类公开定义了执行它的方法的方式/模板。它的子类可以按需要重写方法实现,但调用将以抽象类中定义的方式进行。这种类型的设计模式属于行为型模式。意图: 定义一个操作中的算法的骨架,而将一些步骤延迟到子类中。模板方法使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。主要解决: 一些方法通用,却在每一个子类都重新写了这一...原创 2018-10-28 08:28:12 · 1725 阅读 · 0 评论 -
《设计模式》学习笔记——命令模式
命令模式(Command Pattern)是一种数据驱动的设计模式,它属于行为型模式。 请求以命令的形式包裹在对象中,并传给调用对象。调用对象寻找可以处理该命令的合适的对象,并把该命令传给相应的对象,该对象执行命令。意图: 将一个请求封装成一个对象,从而使您可以用不同的请求对客户进行参数化。主要解决: 在软件系统中,行为请求者与行为实现者通常是一种紧耦合的关系....原创 2018-10-28 08:32:20 · 4028 阅读 · 0 评论 -
《设计模式》学习笔记——责任链模式
责任链模式(Chain of Responsibility Pattern)为请求创建了一个接收者对象的链,这种模式给予请求的类型,对请求的发送者和接收者进行解耦,属于行为型模式。在这种模式中,通常每个接收者都包含对另一个接收者的引用。如果一个对象不能处理该请求,那么它会把相同的请求传给下一个接收者,依此类推。意图: 避免请求发送者与接收者耦合在一起,让多个对象都有可能...原创 2018-10-28 08:38:57 · 9194 阅读 · 0 评论 -
《设计模式》学习笔记——策略模式
策略模式(Strategy Pattern)是指有一定行动内容的相对稳定的策略名称。一个类的行为或其算法可以在运行时更改。这种类型的设计模式属于行为型模式。在策略模式中,我们创建表示各种策略的对象和一个行为随着策略对象改变而改变的 context 对象。策略对象改变 context 对象的执行算法。意图: 定义一系列的算法,把它们一个个封装起来, 并且使它们可相互替换。...原创 2018-10-28 08:44:11 · 4865 阅读 · 0 评论 -
《设计模式》学习笔记——中介者模式
中介者模式(Mediator Pattern)是用来降低多个对象和类之间的通信复杂性。这种模式提供了一个中介类,该类通常处理不同类之间的通信,并支持松耦合,使代码易于维护。中介者模式属于行为型模式。意图: 用一个中介对象来封装一系列的对象交互,中介者使各对象不需要显式地相互引用,从而使其耦合松散,而且可以独立地改变它们之间的交互。主要解决: 对象与对象之间存在大...原创 2018-10-29 07:51:38 · 1878 阅读 · 0 评论 -
《设计模式》学习笔记——写在前面
在这个深夜里,我这会儿思考着的是我的坚持,5年内坚持基础理论的学习,这是我从大学伊始便下定的决心,这很难坚持,不在于技术本身,而在于本心。因为当你看见很多人在使用着快捷、高效的方式开发一个个产品,通过有益的代码复用加快开发进度的时候,你很难再安心于学习这些基础理论知识。因为即便不深入的理解,亦能良好的使用。可是这和我追求本真,谋求改变的心是一致的么? ...原创 2018-10-24 01:17:53 · 568 阅读 · 0 评论 -
《设计模式》学习笔记——代理模式
代理模式(Proxy Pattern):为其他对象提供一种代理以控制对这个对象的访问。在某些情况下,一个对象不适合或者不能直接引用另一个对象,而代理对象可以在客户端和目标对象之间起到中介的作用。代理模式的角色组成: 抽象角色:通过接口或抽象类声明真实角色实现的业务方法。 代理角色 : 实现抽象角色,是真实角色的代理,通过真实角色的业务逻辑方法来实现抽象方法,并可以附...原创 2018-10-25 05:59:01 · 1126 阅读 · 0 评论