![](https://img-blog.csdnimg.cn/20201214094537573.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
设计模式
文章平均质量分 67
学习 《Dive Into DESIGN PATTERNS》与《设计模式之禅》二书的笔记
Demo_Null
学渣的自我修养
展开
-
设计模式 ☞ 行为型之策略模式
策略(Strategy)模式的定义:该模式定义了一系列算法,并将每个算法封装起来,使它们可以相互替换,且算法的变化不会影响使用算法的客户。策略模式属于对象行为模式,它通过对算法进行封装,把使用算法的责任和算法的实现分割开来,并委派给不同的对象对这些算法进行管理。原创 2021-01-15 00:03:40 · 194 阅读 · 0 评论 -
设计模式 ☞ 行为型之状态模式
状态(State)模式的定义:对有状态的对象,把复杂的“判断逻辑”提取到不同的状态对象中,允许状态对象在其内部状态发生改变时改变其行为。原创 2021-01-14 19:40:39 · 176 阅读 · 0 评论 -
设计模式 ☞ 行为型之解释器模式
解释器(Interpreter)模式的定义:给分析对象定义一个语言,并定义该语言的文法表示,再设计一个解析器来解释语言中的句子。也就是说,用编译语言的方式来分析应用中的实例。这种模式实现了文法表达式处理的接口,该接口解释一个特定的上下文。原创 2021-01-14 00:10:21 · 173 阅读 · 0 评论 -
设计模式 ☞ 行为型之备忘录模式
备忘录(Memento)模式的定义:在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态,以便以后当需要时能将该对象恢复到原先保存的状态。该模式又叫快照模式。原创 2021-01-13 19:45:53 · 144 阅读 · 0 评论 -
设计模式 ☞ 行为型之中介者模式
中介者(Mediator)模式的定义:定义一个中介对象来封装一系列对象之间的交互,使原有对象之间的耦合松散,且可以独立地改变它们之间的交互,中介者模式又叫调停模式。原创 2021-01-12 21:07:32 · 143 阅读 · 0 评论 -
设计模式 ☞ 行为型之观察者模式
观察者(Observer)模式的定义:指多个对象间存在一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新。这种模式有时又称作发布-订阅模式、模型-视图模式。原创 2021-01-12 19:35:09 · 136 阅读 · 0 评论 -
设计模式 ☞ 行为型之迭代器模式
迭代器(Iterator)模式的定义:在不暴露集合底层表现形式(列表、栈和树等)的情况下遍历集合中所有的元素。原创 2021-01-12 05:28:52 · 226 阅读 · 0 评论 -
设计模式 ☞ 行为型之访问者模式
访问者(Visitor)模式的定义:将作用于某种数据结构中的各元素的操作分离出来封装成独立的类,使其在不改变数据结构的前提下可以添加作用于这些元素的新的操作,为数据结构中的每个元素提供多种访问方式。它将对数据的操作与数据结构进行分离,是行为类模式中最复杂的一种模式。原创 2021-01-11 19:54:53 · 141 阅读 · 0 评论 -
设计模式 ☞ 行为型之命令模式
命令(Command)模式的定义如下:将一个请求封装为一个对象,使发出请求的责任和执行请求的责任分割开。这样两者之间通过命令对象进行沟通,这样方便将命令对象进行储存、传递、调用、增加与管理。原创 2021-01-11 09:19:16 · 167 阅读 · 0 评论 -
设计模式 ☞ 行为型之模板方法模式
模板方法(Template Method)模式的定义如下:定义一个操作中的算法骨架,而将算法的一些步骤延迟到子类中,允许子类在不修改结构的情况下重写算法的特定步骤。原创 2021-01-07 22:22:40 · 174 阅读 · 0 评论 -
设计模式 ☞ 结构型模式之代理模式
代理模式的定义:由于某些原因需要给某对象提供一个代理以控制对该对象的访问。这时,访问对象不适合或者不能直接引用目标对象,代理对象作为访问对象和目标对象之间的中介,代理控制着对于原对象的访问,并允许在将请求提交给对象前后进行一些处理。原创 2021-01-07 00:15:39 · 178 阅读 · 0 评论 -
设计模式 ☞ 结构型模式之享元模式
享元(Flyweight)模式的定义:运用共享技术来有效地支持大量细粒度对象的复用。它通过共享已经存在的对象来大幅度减少需要创建的对象数量、避免大量相似类的开销,从而提高系统资源的利用率。原创 2021-01-05 14:04:08 · 183 阅读 · 0 评论 -
设计模式 ☞ 结构型模式之外观模式
外观(Facade)模式又叫作门面模式,是一种通过为多个复杂的子系统提供一个一致的接口,而使这些子系统更加容易被访问的模式。该模式对外提供一个统一接口,外部应用程序不用关心内部子系统的具体细节,这样会大大降低应用程序的复杂度,提高了程序的可维护性。原创 2021-01-04 19:30:14 · 160 阅读 · 0 评论 -
设计模式 ☞ 结构型模式之组合模式
组合(Composite Pattern)模式的定义:又称整体-部分(Part-Whole)模式,它是一种将对象组合成树状的层次结构的模式,用来表示“整体-部分”的关系,使用户对单个对象和组合对象具有一致的访问性,属于结构型设计模式。原创 2021-01-04 14:08:15 · 169 阅读 · 0 评论 -
设计模式 ☞ 结构型模式之装饰器模式
装饰(Decorator)模式的定义:指在不改变现有对象结构的情况下,动态地给该对象增加一些职责(即增加其额外功能)的模式,它属于对象结构型模式。即允许通过将对象放入包含行为的特殊封装对象中来为原对象绑定新的行为。原创 2020-12-31 14:01:56 · 177 阅读 · 0 评论 -
设计模式 ☞ 结构型模式之桥接模式
桥接(Bridge)模式的定义如下:将抽象与实现分离,使它们可以独立变化,简单来说,就是将一个大类或一系列紧密相关的类拆分为抽象和实现两个独立的层次结构, 从而能在开发时分别使用。它是用组合关系代替继承关系来实现,从而降低了抽象和实现这两个可变维度的耦合度。原创 2020-12-30 21:10:09 · 193 阅读 · 0 评论 -
设计模式 ☞ 结构型模式之适配器模式
适配器模式(Adapter)的定义如下:将一个类的接口转换成客户希望的另外一个接口,使得原本由于接口不兼容而不能一起工作的那些类能一起工作。适配器模式分为类结构型模式和对象结构型模式两种,前者类之间的耦合度比后者高,且要求程序员了解现有组件库中的相关组件的内部结构,所以应用相对较少些。原创 2020-12-30 14:08:45 · 169 阅读 · 0 评论 -
设计模式 ☞ 创建型模式之建造者模式
建造者(Builder)模式的定义:指将一个复杂对象的构造与它的表示分离,使同样的构建过程可以创建不同的表示,这样的设计模式被称为建造者模式。它是将一个复杂的对象分解为多个简单的对象,然后一步一步构建而成。它将变与不变相分离,即产品的组成部分是不变的,但每一部分是可以灵活选择的。原创 2020-12-28 19:42:50 · 170 阅读 · 0 评论 -
设计模式 ☞ 创建型模式之原型模式
原型(Prototype)模式的定义如下:用一个已经创建的实例作为原型,通过复制该原型对象来创建一个和原型相同或相似的新对象。原创 2020-12-25 20:34:48 · 172 阅读 · 0 评论 -
设计模式 ☞ 创建型模式之抽象工厂模式
抽象工厂模式(Abstract Factory Pattern)隶属于设计模式中的创建型模式,用于产品族的构建。抽象工厂是所有形态的工厂模式中最为抽象和最具一般性的一种形态。抽象工厂是指当有多个抽象角色时使用的一种工厂模式。原创 2020-12-24 19:57:36 · 240 阅读 · 0 评论 -
设计模式 ☞ 概述
算法更像是菜谱: 提供达成目标的明确步骤。 而模式更像是蓝图: 可以看到最终的结果和模式的功能, 但需要自己确定实现步骤。原创 2020-12-14 20:49:32 · 1786 阅读 · 0 评论 -
设计模式 ☞ 七大设计原则之单一职责原则
单一职责原则(Single Responsibility Principle,SRP)又称单一功能原则,由罗伯特·C.马丁(Robert C. Martin)于《敏捷软件开发:原则、模式和实践》一书中提出的。这里的职责是指类变化的原因,单一职责原则规定一个类应该有且仅有一个引起它变化的原因,否则类应该被拆分原创 2020-12-14 22:37:35 · 329 阅读 · 0 评论 -
设计模式 ☞ 七大设计原则之接口隔离原则
2002 年罗伯特·C·马丁给“接口隔离原则”的定义是:客户端不应该被迫依赖于它不使用的方法(Clients should not be forced to depend on methods they do not use)。该原则还有另外一个定义:一个类对另一个类的依赖应该建立在最小的接口上(The dependency of one class to another one should depend on the smallest possible interface)。原创 2020-12-15 14:03:50 · 257 阅读 · 0 评论 -
设计模式 ☞ 七大设计原则之依赖倒置原则
依赖倒置原则(Dependence Inversion Principle,DIP)是 Object Mentor 公司总裁罗伯特·马丁(Robert C.Martin)于 1996 年在 C++ Report 上发表的文章。依赖倒置原则的原始定义为:高层模块不应该依赖低层模块,两者都应该依赖其抽象;抽象不应该依赖细节,细节应该依赖抽象。其核心思想是:要面向接口编程,不要面向实现编程。原创 2020-12-15 22:47:22 · 334 阅读 · 1 评论 -
设计模式 ☞ 七大设计原则之里氏替换原则
里氏替换原则(Liskov Substitution Principle,LSP)由麻省理工学院计算机科学实验室的里斯科夫(Liskov)女士在 1987 年的 "面向对象技术的高峰会议(OOPSLA)"上发表的一篇文章《数据抽象和层次》里提出来的,她提出:继承必须确保超类所拥有的性质在子类中仍然成立。里氏替换原则主要阐述了有关继承的一些原则,也就是什么时候应该使用继承,什么时候不应该使用继承,以及其中蕴含的原理。原创 2020-12-16 18:52:26 · 299 阅读 · 0 评论 -
设计模式 ☞ 七大设计原则之开闭原则
开闭原则(Open Closed Principle,OCP)由勃兰特·梅耶提出,他在 1988 年的著作《面向对象软件构造》中提出:软件实体应当对扩展开放,对修改关闭),这就是开闭原则的经典定义。简单来说,当应用的需求改变时,在不修改软件实体的源代码或者二进制代码的前提下,可以扩展模块的功能,使其满足新的需求。原创 2020-12-16 22:12:06 · 373 阅读 · 1 评论 -
设计模式 ☞ 七大设计原则之迪米特法则
迪米特法则的定义是:只与你的直接朋友交谈,不跟 "陌生人" 说话。其含义是:如果两个软件实体无须直接通信,那么就不应当发生直接的相互调用,可以通过第三方转发该调用。其目的是降低类之间的耦合度,提高模块的相对独立性。原创 2020-12-17 14:04:40 · 306 阅读 · 0 评论 -
设计模式 ☞ 七大设计原则之合成复用原则
合成复用原则(Composite Reuse Principle,CRP)又叫组合/聚合复用原则(Composition/Aggregate Reuse Principle,CARP)。它要求在软件复用时,要尽量先使用组合或者聚合等关联关系来实现,其次才考虑使用继承关系来实现。如果要使用继承关系,则必须严格遵循里氏替换原则。合成复用原则同里氏替换原则相辅相成的,两者都是开闭原则的具体实现规范。原创 2020-12-17 19:03:09 · 305 阅读 · 0 评论 -
设计模式 ☞ 创建型模式之单例模式
单例(Singleton)模式的定义:是一种创建型设计模式, 让你能够保证一个类只有一个实例, 并提供一个访问该实例的全局节点。原创 2020-12-23 14:02:32 · 358 阅读 · 0 评论 -
设计模式 ☞ 创建型模式之工厂方法模式
工厂方法(Factory Method)模式的意义是定义一个创建产品对象的工厂接口,将实际创建工作推迟到子类当中。工厂方法模式是简单工厂模式的衍生,解决了许多简单工厂模式的问题。首先完全实现‘开闭原则’,实现了可扩展。其次更复杂的层次结构,可以应用于产品结果复杂的场合。原创 2020-12-24 14:04:22 · 251 阅读 · 0 评论