设计模式
这该死か℡命运
I'm a ---
展开
-
解释器模式
定义与特点这个模式啊我看蛮难的 自己定义语法啥的—解释器(Interpreter)模式的定义:给分析对象定义一个语言,并定义该语言的文法表示,再设计一个解析器来解释语言中的句子。也就是说,用编译语言的方式来分析应用中的实例。这种模式实现了文法表达式处理的接口,该接口解释一个特定的上下文。这里提到的文法和句子的概念同编译原理中的描述相同,“文法”指语言的语法规则,而“句子”是语言集中的元...原创 2020-04-07 14:55:16 · 157 阅读 · 0 评论 -
备忘录模式
定义与特点备忘录(Memento)模式的定义:在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态,以便以后当需要时能将该对象恢复到原先保存的状态。该模式又叫快照模式。备忘录模式是一种对象行为型模式,其主要优点如下。提供了一种可以恢复状态的机制。当用户需要时能够比较方便地将数据恢复到某个历史的状态。实现了内部状态的封装。除了创建它的发起人之外,其他对象都不能够访问这...原创 2020-04-07 13:55:31 · 142 阅读 · 0 评论 -
访问者模式
定义与特点访问者(Visitor)模式的定义:将作用于某种数据结构中的各元素的操作分离出来封装成独立的类,使其在不改变数据结构的前提下可以添加作用于这些元素的新的操作,为数据结构中的每个元素提供多种访问方式。它将对数据的操作与数据结构进行分离,是行为类模式中最复杂的一种模式。访问者(Visitor)模式是一种对象行为型模式,其主要优点如下。扩展性好。能够在不修改对象结构中的元素的情况下,为...原创 2020-04-04 19:34:48 · 198 阅读 · 0 评论 -
迭代器模式
定义与特点迭代器(Iterator)模式的定义:提供一个对象来顺序访问聚合对象中的一系列数据,而不暴露聚合对象的内部表示。迭代器模式是一种对象行为型模式,其主要优点如下。访问一个聚合对象的内容而无须暴露它的内部表示。遍历任务交由迭代器完成,这简化了聚合类。它支持以不同方式遍历一个聚合,甚至可以自定义迭代器的子类以支持新的遍历。增加新的聚合类和迭代器类都很方便,无须修改原有代码。封装性...原创 2020-04-04 16:04:08 · 136 阅读 · 0 评论 -
中介者模式
定义与特点中介者(Mediator)模式的定义:定义一个中介对象来封装一系列对象之间的交互,使原有对象之间的耦合松散,且可以独立地改变它们之间的交互。中介者模式又叫调停模式,它是迪米特法则的典型应用。中介者模式是一种对象行为型模式,其主要优点如下。降低了对象之间的耦合性,使得对象易于独立地被复用。将对象间的一对多关联转变为一对一的关联,提高系统的灵活性,使得系统易于维护和扩展。其主要...原创 2020-04-04 15:39:03 · 179 阅读 · 0 评论 -
观察者模式
定义与特点观察者(Observer)模式的定义:指多个对象间存在一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新。这种模式有时又称作发布-订阅模式、模型-视图模式,它是对象行为型模式。观察者模式是一种对象行为型模式,其主要优点如下。降低了目标与观察者之间的耦合关系,两者之间是抽象耦合关系。目标与观察者之间建立了一套触发机制。它的主要缺点如下。...原创 2020-04-04 15:00:46 · 146 阅读 · 0 评论 -
状态模式
定义与特点状态(State)模式的定义:对有状态的对象,把复杂的“判断逻辑”提取到不同的状态对象中,允许状态对象在其内部状态发生改变时改变其行为。状态模式是一种对象行为型模式,其主要优点如下。状态模式将与特定状态相关的行为局部化到一个状态中,并且将不同状态的行为分割开来,满足“单一职责原则”。减少对象间的相互依赖。将不同的状态引入独立的对象中会使得状态转换变得更加明确,且减少对象间的相互...原创 2020-04-04 14:01:39 · 181 阅读 · 0 评论 -
责任链模式
定义与特点责任链(Chain of Responsibility)模式的定义:为了避免请求发送者与多个请求处理者耦合在一起,将所有请求的处理者通过前一对象记住其下一个对象的引用而连成一条链;当有请求发生时,可将请求沿着这条链传递,直到有对象处理它为止。注意:责任链模式也叫职责链模式。在责任链模式中,客户只需要将请求发送到责任链上即可,无须关心请求的处理细节和请求的传递过程,所以责任链将请求的...原创 2020-04-04 10:48:59 · 147 阅读 · 0 评论 -
命令模式
定义与特点定义如下:将一个请求封装为一个对象,使发出请求的责任和执行请求的责任分割开.这样两者之间通过命令对象进行沟通,这样方便将命令对象进行储存、传递、调用、增加与管理。命令模式的主要优点如下。降低系统的耦合度。命令模式能将调用操作的对象与实现该操作的对象解耦。增加或删除命令非常方便。采用命令模式增加与删除命令不会影响其他类,它满足“开闭原则”,对扩展比较灵活。可以实现宏命令。命令模...原创 2020-04-03 17:00:14 · 260 阅读 · 0 评论 -
策略模式
定义与特点策略(Strategy)模式的定义:该模式定义了一系列算法,并将每个算法封装起来,使它们可以相互替换,且算法的变化不会影响使用算法的客户。策略模式属于对象行为模式,它通过对算法进行封装,把使用算法的责任和算法的实现分割开来,并委派给不同的对象对这些算法进行管理。策略模式的主要优点如下。多重条件语句不易维护,而使用策略模式可以避免使用多重条件语句。策略模式提供了一系列的可供重用的...原创 2020-04-03 15:26:16 · 149 阅读 · 0 评论 -
模板方法模式
定义与特点定义一个操作中的算法骨架,而将算法的一些步骤延迟到子类中,使得子类可以不改变该算法结构的情况下重定义该算法的某些特定步骤。它是一种类行为型模式。该模式的主要优点如下。它封装了不变部分,扩展可变部分。它把认为是不变部分的算法封装到父类中实现,而把可变部分算法由子类继承实现,便于子类继续扩展。它在父类中提取了公共的部分代码,便于代码复用。部分方法是由子类实现的,因此子类可以通过扩...原创 2020-04-03 14:23:30 · 138 阅读 · 0 评论 -
组合模式
定义及优缺点定义:有时又叫作部分-整体模式,它是一种将对象组合成树状的层次结构的模式,用来表示“部分-整体”的关系,使用户对单个对象和组合对象具有一致的访问性。组合模式的主要优点有:组合模式使得客户端代码可以一致地处理单个对象和组合对象,无须关心自己处理的是单个对象,还是组合对象,这简化了客户端代码;更容易在组合体内加入新的对象,客户端不会因为加入了新的对象而更改源代码,满足“开闭原则”...原创 2020-04-03 13:25:07 · 123 阅读 · 0 评论 -
享元模式
定义 : 运用共享技术来有効地支持对 对象的复用享元模式的主要优点是:相同对象只要保存一份,这降低了系统中对象的数量,从而降低了系统中细粒度对象给内存带来的压力。其主要缺点是:为了使对象可以共享,需要将一些不能共享的状态外部化,这将增加程序的复杂性。读取享元模式的外部状态会使得运行时间稍微变长。享元模式中存在以下两种状态:内部状态,即不会随着环境的改变而改变的可共享部分;外部状...原创 2020-03-31 20:02:25 · 128 阅读 · 0 评论 -
装饰模式
装饰(Decorator)模式的定义:指在不改变现有对象结构的情况下,动态地给该对象增加一些职责(即增加其额外功能)的模式,它属于对象结构型模式。装饰(Decorator)模式的主要优点有:采用装饰模式扩展对象的功能比采用继承方式更加灵活。可以设计出多个不同的具体装饰类,创造出多个不同行为的组合。-行为多样其主要缺点是:装饰模式增加了许多子类,如果过度使用会使程序变得很复杂。模式的结...原创 2020-03-31 16:58:19 · 149 阅读 · 0 评论 -
适配器模式
定义与特点适配器模式(Adapter)的定义如下:将一个类的接口转换成客户希望的另外一个接口,使得原本由于接口不兼容而不能一起工作的那些类能一起工作。适配器模式分为类结构型模式和对象结构模式两种,前者类之间的耦合度比后者高,且要求程序员了解现有组件库中的相关组件的内部结构,所以应用相对较少些。该模式的主要优点如下。客户端通过适配器可以透明地调用目标接口。复用了现存的类,程序员不需要修改原...原创 2020-03-31 14:59:44 · 130 阅读 · 0 评论 -
代理模式
代理模式的定义:由于某些原因需要给某对象提供一个代理以控制对该对象的访问。这时,访问对象不适合或者不能直接引用目标对象,代理对象作为访问对象和目标对象之间的中介。优点:代理模式在客户端与目标对象之间起到一个中介作用和保护目标对象的作用;代理对象可以扩展目标对象的功能;代理模式能将客户端与目标对象分离,在一定程度上降低了系统的耦合度;缺点:在客户端和目标对象之间增加一个代理对象,会...原创 2020-03-31 14:20:47 · 119 阅读 · 0 评论 -
建造者模式
模式的定义与特点它是将一个复杂的对象分解为多个简单的对象,然后一步一步构建而成。它将变与不变相分离,即产品的组成部分是不变的,但每一部分是可以灵活选择的。优点:客户端不必知道产品内部组成的细节,便于控制细节风险。各个具体的建造者相互独立,有利于系统的扩展。缺点产品的组成部分必须相同,这限制了其使用范围。如果产品的内部变化复杂,该模式会增加很多的建造者类建造者模式注重零部件的组...原创 2020-03-30 21:13:55 · 109 阅读 · 0 评论 -
抽象工厂模式
前面介绍的工厂方法模式中考虑的是一类产品的生产,如畜牧场只养动物、电视机厂只生产电视机等。现实中工厂肯定是生产各种各样的产品,综合型的。模式的定义与特点抽象工厂(AbstractFactory)模式的定义:是一种为访问类提供一个创建一组相关或相互依赖对象的接口,且访问类无须指定所要产品的具体类就能得到同族的不同等级的产品的模式结构。抽象工厂模式是工厂方法模式的升级版本,工厂方法模式只生产一个...原创 2020-03-30 20:01:00 · 156 阅读 · 0 评论 -
工厂方法模式
模式的定义与特点定义一个创建产品对象的工厂接口,将产品对象的实际创建工作推迟到具体子工厂类当中。这满足创建型模式中所要求的“创建与使用相分离”的特点。被创建的对象称为“产品”,创建产品的对象称为“工厂”。如果要创建的产品不多,只要一个工厂类就可以完成,这种模式叫“简单工厂模式”,它不属于 GoF 的 23 种经典设计模式,它的缺点是增加新产品时会违背“开闭原则工厂方法模式的主要优点有用户...原创 2020-03-30 16:42:57 · 581 阅读 · 0 评论 -
原型模式
定义:用一个已经创建的实例作为原型,通过复制该原型对象来创建一个和原型对象相同或类似的新对象原型模式包含了以下主要角色抽象原型类:规定具体原型对象必须实现的接口具体原型类:实现抽象原型类的clone()方法,它是可被复制的对象访问类:使用具体原型类的clone()方法来复制新的对象克隆分为浅克隆(地址没变) 和深克隆 java的Object类提供浅克隆的clone()方法,具体原型类只...原创 2020-03-29 20:51:41 · 95 阅读 · 0 评论 -
单例模式
从字面意思看 就是一个实例/对象特点:单例类只有一个实例对象该对象有单例类自行创建单例类对外提供一个访问该单例的全局访问点两种形式1.懒汉式通过调用方法生成实例对象public class LazySingleton{ private static volatie LazySingleton instance=null; //保证 instance 线程同步 priva...原创 2020-03-29 18:16:28 · 94 阅读 · 0 评论 -
数组去重算法挑战-中级脚本算法
function unite(arr1, arr2, arr3) { var list=new Set(); for(var i=0;i<arguments.length;i++){ for(var j=0;j<arguments[i].length;j++){ list.add(arguments[i][j]); } } console.log(Array....原创 2019-11-28 21:11:27 · 108 阅读 · 0 评论 -
桥接模式
桥接模式他应该写错了,是聚合关系,不是组合,那怎么可能脱离整体存在桥接(Bridge)模式的定义如下:将抽象与实现分离,使它们可以独立变化。桥接(Bridge)模式的优点是:由于抽象与实现分离,所以扩展能力强;其实现细节对客户透明。要求开发者针对抽象化进行设计与编程,这增加了系统的理解与设计难度。模式的结构桥接(Bridge)模式包含以下主要角色。抽象化(Abstraction...原创 2019-11-14 16:49:06 · 121 阅读 · 0 评论 -
设计模式 (2)--开发原则
同样附上链接原则所有的内容链接里面有,我只是记记 哈哈在软件开发中,为了提高软件系统的可维护性和可复用性,增加软件的可扩展性和灵活性,程序员要尽量根据 7 条原则来开发程序,从而提高软件开发效率、节约软件开发成本和维护成本。我们来介绍这 7 条原则。开闭原则软件实体应当对扩展开放,对修改关闭这里的软件实体包括以下几个部分:项目中划分出的模块类与接口方法开闭原则的含义是:当应...原创 2019-11-13 13:01:50 · 196 阅读 · 0 评论 -
设计模式 (1) -UML
C语言中文网参考设计模式记录所看:设计模式的本质是面向对象设计原则的实际运用,是对类的封装性、继承性和多态性以及类的关联关系和组合关系的充分理解UML中,类使用包含类名、属性和操作且带有分隔线的矩形来表示。接口使用一个带有名称的小圆圈来进行表示。类的关系根据类与类之间的耦合度从弱到强排列,UML 中的类图有以下几种关系:依赖关系、关联关系、聚合关系、组合关系、泛化关系和实现关系。其...原创 2019-11-13 11:12:37 · 218 阅读 · 0 评论