图解设计模式
文章平均质量分 58
wujunyucg
这个作者很懒,什么都没留下…
展开
-
图解设计模式 - Builder 模式
读书笔记 仅供参考Builder 模式用于组装具有复杂结构的实例。角色和 UMLBuilder:负责定义用于生成实例的接口。 ConcreteBuilder:负责实现 Builder 角色的接口。定义了在生成实例时实际被调用的方法,还定义了获取最终生成结果的方法。 Director:负责使用 Builder 角色的接口来生成实例。 Client: 该角色来使用 Builder 模式(可以忽略)原创 2017-11-28 20:29:26 · 320 阅读 · 0 评论 -
图解设计模式 - Chain of Responsibility
读书笔记 仅供参考简述职责链模式将多个对象组成一条职责链,然后按照他们在职责链上的顺序一个个找出到底应该谁负责处理。也是推卸责任的结构。角色和 UMLHandler定义了处理请求的接口(API),该角色知道下一个处理者是谁,如果自己无法处理,将请求转发给下一个。ConcreteHandler处理请求的具体角色Client向第一个 ConcreteHandler 角色发送请求的角色。UML 例子例程是原创 2017-12-15 12:59:25 · 201 阅读 · 0 评论 -
图解设计模式 - Prototype 模式
读书笔记 仅供参考Prototype 模式有时会出现“在不指定类名的前提下生成实例”的情况,就是根据实例生成实例,这就是原型模式。 以下情况需要使用原型模式对象种类繁多,无法将它们整合到一个类中需要处理的对象太多,如果将它们分别作为一个类,必须要编写许多个类。难以根据类生产实例生成实例的过程太过复杂,很难根据类来生成实例,所以需要通过复制来生成新的实例。想解耦框架与生成的实例想要生成实例的框架不依原创 2017-11-27 20:03:41 · 190 阅读 · 0 评论 -
图解设计模式 - Observer 模式
读书笔记 仅供参考简述观察者模式,当观察对象的状态发生变化时,会通知给观察者。适用于根据对象状态进行相应处理的场景。角色和 UMLSubject该角色表示观察对象,定义了注册观察者和删除观察者的方法,同时声明了获取现在状态的方法。ConcreteSubject具体的被观察对象,自身状态改变后,会通知已经注册的 Observer 对象。Observer负责接收来自 Subject 角色的状态变化的通知原创 2017-12-24 14:54:09 · 218 阅读 · 0 评论 -
图解设计模式 - Memento 模式
读书笔记 仅供参考简述Memento,备忘录模式,主要用于 Undo, Redo,History,Snapshot 等功能。事先将某个时间点的实例的状态保持下来,之后再有必要时,再将实例恢复至当时的状态。角色和 UMLOriginator在保存自己的最新状态时生成 Memento 角色。当把以前的 Memento 角色传给 Originator 时,会自动恢复。Memento将 Originator原创 2017-12-24 16:18:20 · 221 阅读 · 0 评论 -
图解设计模式 - Bridge 模式
读书笔记 仅供参考Bridge 模式将类的功能层次结构和类的实现层次结构相连接类的层次结构类的功能层次结构父类具有基本结构在子类中增加新的功能类的实现层次结构父类通过声明抽象方法来定义接口(API)子类通过实现具体方法来实现接口(API)UML 和角色Abstraction位于“功能层次结构”顶层,角色保存了 Implementor 的实例RefinedAbstraction继承 Abs原创 2017-12-06 21:23:01 · 312 阅读 · 0 评论 -
图解设计模式 - State 模式
读书笔记 仅供参考简述State 模式就是用类表示状态,从例子来看比较清晰角色和 UMLState表示状态,定义根据不同状态进行不同处理的接口(API)。ConcreteState各个具体的状态。Context角色持有表示当前状态的 ConcreteState 角色。定义了供外部调用者使用 State 模式的接口(API) 。UML例子例程是一个使用金库的 GUI 程序,有使用金库,按下警铃和拨通电原创 2017-12-26 16:58:02 · 367 阅读 · 0 评论 -
图解设计模式 - Flyweight 模式
读书笔记 仅供参考简述可以翻译成享元模式,通过尽量共享实例来避免 new 出实例。角色和 UMLFlyweight实例会被共享的类。FlyweightFactory生成 Flyweight 的工厂,在工厂中实现共享实例。Client使用 FlyweightFactory 生成 Flyweight。UML例子例程是一个显示字符串的程序,但是其中的字符是 BigChar,即是由字符串构成的字符:....原创 2017-12-26 17:41:09 · 402 阅读 · 0 评论 -
图解设计模式 - Proxy 模式
读书笔记 仅供参考简述Proxy, 代理模式,代替一些类进行工作。角色和 UMLSubject定义了使 Proxy 角色和 RealSubject 角色具有一致性的接口。Proxy角色会尽量处理来自 Client 角色的请求。只有当自己不能处理的时候,才会将工作交给 RealSubject 角色。Proxy 只会在必要时才会生成 RealSubject 角色。RealSubject在 Proxy 角原创 2017-12-26 20:29:18 · 345 阅读 · 0 评论 -
图解设计模式 - Command 模式
读书笔记 仅供参考简述Command 模式是使用表示命令的类来代替方法的调用,这样就可以管理工作的历史记录。角色和 UMLCommand定义命令的接口(API)。ConcreteCommand负责实现在 Command 角色中定义的接口(API)。Receiver是 Command 角色执行命令时的对象,可以称为命令接收者。Client负责生成 ConcreteCommand 角色并分配 Recei原创 2017-12-27 11:53:05 · 988 阅读 · 0 评论 -
图解设计模式- Mediator 模式
读书笔记 仅供参考简述Mediator 就是 仲裁者(中介者)模式。如果将程序看作许多类作为一个团队进行工作,那么团队的交流过程就是组员向仲裁者报告,仲裁者向组员下达指标,组员之间不再相互询问。角色和 UMLMediator角色负责定义与 Colleague 角色进行通信和做出决定的接口(API)。ConcreteMediator负责实现 Mediator 角色的接口(API)。Colleague(原创 2017-12-22 22:01:28 · 244 阅读 · 0 评论 -
图解设计模式 - Visitor 模式
读书笔记 仅供参考简述通常将数据结构和处理数据的代码放到同一个类中,但是如果有多种处理方式,增加处理方式就会多次修改数据类。Visitor 模式(访问者模式)将数据结构与处理分离开来,增加新的处理时,只需要编写新的访问者就可以了。UML 和角色Visitor负责对数据结构中每个具体的元素(ConcreteElement 角色)声明一个用于访问的 visit 方法。ConcreteVisitor负责实原创 2017-12-14 14:11:49 · 284 阅读 · 0 评论 -
图解设计模式 - Singleton 模式
读书笔记 仅供参考Singleton 模式Singleton 模式是为了满足“只能创建一个实例”的需求。想确保任何情况下都绝对只有一个实例想在程序上表现出“只存在一个实例”UML代码Singleton 类,单例类public class Singleton { private static Singleton singleton = new Singleton(); priva原创 2017-11-26 19:54:17 · 202 阅读 · 0 评论 -
图解设计模式 - Strategy 模式
读书笔记 仅供参考策略模式策略模式就是可以整体地替换算法,可以轻松地以不同的算法去解决同一个问题。角色和 UMLStrategy负责决定实现策略(算法)哦接口(API)ConcreteStrategy负责实现 Strategy 定义的接口(API)Context负责使用 Strategy 角色UML例子例程是一个猜拳的程序,有两种猜拳策略,一是上一局赢了就不变手,输了就随机出,二是根据之前所有的出拳原创 2017-12-08 21:48:50 · 227 阅读 · 0 评论 -
图解设计模式 - Composite 模式
读书笔记 仅供参考简述Composite 是混合物,复合物的意思。类似与“文件夹”的概念,文件夹当中可以放文件也可以放文件夹,文件夹形成了一种容器结构、递归结构,有时文件和文件夹当作同一种对象看待。 Composite 模式就是创造这样结构的模式。能够使容器与内容具有一致性,创造出递归结构。UML 和角色Leaf表示“内容”的角色,在该角色中不能放入其他对象,就像一个文件Composite表示容器原创 2017-12-11 20:55:25 · 282 阅读 · 0 评论 -
图解设计模式 - Decorator 模式
读书笔记 仅供参考简述Decorator 模式(装饰着模式)是维持装饰边框和装饰物的一致性,为对象增加新的功能,但是它还是原来的对象UML 和角色Component增加功能的核心角色,就像是一块蛋糕(抽象),可以被添加很多奶油和水果。Component 定义了蛋糕的接口(API)。ConcreteComponent实现了 Component 角色定义的接口(API)的具体蛋糕。Decorator具有原创 2017-12-12 21:52:25 · 414 阅读 · 0 评论 -
图解设计模式 - Template Method 模式
读书笔记 仅供参考什么是 Template Method 模式模板方法模式是带有模板功能功能的模式,组成模板的方法被定义在父类中,方法都是抽象方法,唯一知道的就是父类如何调用这些方法。实现抽象方法的是子类,在不同的子类中有不同的实现处理,但是处理的流程都按照父类所定义的进行。 父类中定义处理流程的框架,在子类中实现具体处理。 这个模式基本上就是实现继承,主要是在父类中多了一个定义处理流程的方法。原创 2017-11-24 20:27:29 · 343 阅读 · 0 评论 -
图解设计模式 - Adapter 模式
读书笔记 仅供参考Adapter 模式Adapter 即为是适配器,用来填补两者之间的差异。就想充电器的装换器,要把 220v 的电压转换为低电压才能对手机或电脑充电。 Adapter 模式也称为 Wrapper(包装器)模式。 两种 Adapter 模式:类适配器模式(使用继承的适配器)对象适配器模式(使用委托的适配器)角色Client 类是客户端,调用适配器。 Adaptee 是需要原创 2017-11-23 21:12:12 · 2193 阅读 · 0 评论 -
图解设计模式 - Iterator 模式
读书笔记 仅供参考Iterator 模式即为迭代器模式,用于在数据集合中按照顺序遍历集合。Iterator(迭代器)负责定义按顺序逐个遍历元素的方法,本身是一个接口,例如下面示例程序的 hasNext 和 next 方法。ConcreteIterator(具体的迭代器)实现 Iterator 定义的方法,例如程序中的 BookShelfIterator,在这个示例中应该存在需要遍历的集合(BookS原创 2017-11-21 21:13:06 · 278 阅读 · 0 评论 -
图解设计模式 - Facade 模式
读书笔记 仅供参考简述使用 Facade 模式为互相关联在一起的错综复杂的类整理出高层接口(API),让系统对外只有一个简单的接口(API),还可以考虑到系统内部各个类之间的责任关系和依赖关系,按照正确的顺序调用哥哥类。角色和 UMLFacade向系统外部提供高层接口(API)构成系统的许多其它角色这些角色不能感知到 Facade 角色Client负责调用 FacadeUML例子例程是一个根据邮箱地原创 2017-12-20 19:48:16 · 598 阅读 · 0 评论 -
图解设计模式 - Factory Method 模式
读书笔记 仅供参考Factory Method将模板方法模式用于生产实例,就是工厂方法模式了。在 Factory Method 模式中,父类决定了实例的生成方式,但是并不决定所要生成的具体的类,具体的处理交给子类负责。UML 和角色ProductProduct 是一个抽象类,定义了在模式中生成的实例所需要实现的接口,具体的处理由子类 ConcreteProduct 决定。CreatorCreator原创 2017-11-25 14:49:13 · 402 阅读 · 0 评论 -
图解设计模式 - Abstract Factory 模式
读书笔记 仅供参考Abstract Factory抽象工厂的工作室将抽象零件组装为抽象产品。 我们并不关心零件的具体实现,而是只关心接口(API)。我们仅使用该接口(API)将零件组装成为产品。UML 和角色AbstractProduct负责定义 AbstractFactory 角色所生成的抽象零件和产品的接口(API)AbstractFactory负责定义用于生成抽象产品的接口(API)Conc原创 2017-12-05 20:32:36 · 397 阅读 · 0 评论 -
图解设计模式 - Interpreter 模式
读书笔记 仅供参考简述在 Interpreter 模式中,需要编写一个“翻译程序”,翻译自己定义的“迷你语言”,可以通过“迷你语言”编写“迷你程序”。角色和 UMLAbstractExpression定义了语法树节点的共同接口(API)。TerminalExpression对应 BNF 中的终结符表达式。NonterminalExpression对应 BNF 中的非终结符表达式。Context为解释原创 2017-12-27 17:02:14 · 677 阅读 · 0 评论