设计模式
Efforts_To_Advanced
这个作者很懒,什么都没留下…
展开
-
Iterator模式(迭代器模式)
Iterator有反复做某件事的意思。Iterator模式用于在数据集合中按照顺序遍历集合。一个一个遍历。举例:for(int i = 0; i < arr.length; i++){ System.out.println(arr[i]); }将这里的循环变量 i 的作用抽象化、通用化后形成的模式,就是Iterator模式。例子:将书(book...原创 2018-04-10 20:24:13 · 178 阅读 · 0 评论 -
Memento模式(备忘录模式)
Memento模式:事先将某个时间点的实例的状态保存下来,之后在有必要时,再将实例恢复至当时的状态。Originator(生成者)在保存自己的最新状态时生成Memento角色。当把以前保存的Memento 角色传递给Originator角色时,它将自己恢复至生成该Memento角色时的状态。Memento(纪念品)将Originator角色的内部信息整合在一起。Caretaker(负责人)以后可能...原创 2018-04-17 22:23:44 · 210 阅读 · 0 评论 -
Prototype模式(原型模式)
原型模式:不根据类生成实例,根据实例来生成新实例。java语言中,使用clone创建出实例副本。示例:将字符串放入方框中显示出来或是加上下划线显示出来。Product接口:(复制功能的接口)package framework;import java.lang.Cloneable;public interface Product extends Cloneable { public abstr...原创 2018-04-12 14:44:14 · 155 阅读 · 0 评论 -
State模式(状态模式)
State模式:用类表示状态不需要if或者switch语句来判断状态State(状态)定义了根据不同状态进行不同处理的接口ConcreteState(具体状态)表示各个具体的状态Context(状况、前后关系、上下文)定义了供外部调用者使用State模式的接口...原创 2018-04-18 11:09:07 · 202 阅读 · 0 评论 -
Flyweight模式(享元模式)
Flyweight模式:通过尽量共享实例来避免new出实例。Flyweight(轻量级)实例会被共享的类FlyweightFactory(轻量级工厂)生成Flyweight角色(HashMap管理)Client(请求者)使用FlyweightFactory角色生成Flyweight角色Intrinsic:应当共享的信息Extrinsic:不应当共享的信息...原创 2018-04-18 15:15:15 · 126 阅读 · 0 评论 -
Proxy模式(代理模式)
Proxy模式:“本人”对象太忙,有些工作无法亲自完成,就将其交给“代理人”对象负责。Subject(主体)定义了使Proxy角色和RealSubject角色之间具有一致性的接口。Proxy(代理人)尽量处理来自Client角色的请求。只有在自己不能处理时,它才会将工作交给RealSubject角色。Proxy角色只有在必要的时候才会生成RealSubject角色。RealSubject(实际的主...原创 2018-04-18 16:16:33 · 154 阅读 · 0 评论 -
Builder模式(建造者模式)
Builder模式:组装具有复杂结构的实例,组装的具体过程封装在Director角色中。实例:。含有一个标题 。含有几个字符串 。含有条目项目Builder类:(Builder抽象类)public abstract class Builder { public abstract void makeTitle(String title); public...原创 2018-04-13 10:34:09 · 267 阅读 · 0 评论 -
Abstract Factory模式(抽象工厂模式)
Abstract Factory模式:将关联零件组装成产品。AbstractProduct(抽象产品)负责定义AbstractFactory角色所生成的抽象零件和产品的接口(API)AbstactFactory(抽象工厂)负责定义用于生成抽象产品的接口(API)Client(委托人)仅会调用AbstractFactory角色和AbstractProduct角色的接口进行工作ConcreteProd...原创 2018-04-13 14:39:26 · 284 阅读 · 0 评论 -
Bridge模式(桥接模式)
Bridge功能:在“类的功能层次结构”和“类的实现层次结构”之间搭建桥梁。类的功能层次结构:父类具有基本功能,在子类中增加新的功能。类的实现层次结构:父类通过声明抽象方法定义接口,子类通过实现具体方法来实现接口。示例:“显示一些东西”类的功能层次结构:Display类(Abstraction抽象类)public class Display { private DisplayImpl imp...原创 2018-04-13 15:32:58 · 238 阅读 · 0 评论 -
Strategy模式(策略模式)
Strategy模式:整体的替换算法。示例:让电脑玩猜拳游戏Strategy实现策略所必须的接口ConcreteStrategy实现Strategy角色的接口Context使用Strategy角色原创 2018-04-16 10:17:26 · 320 阅读 · 0 评论 -
Singleton模式(单例模式)
单例模式:确保在任何情况下只生成一个实例。Singleton 类:public class Singleton { private static Singleton singleton = new Singleton();//返回唯一实例的static方法 private Singleton() { // 定义为private是为了禁止从 Singleton外部调用构造函数...原创 2018-04-12 10:44:14 · 156 阅读 · 0 评论 -
Factory Method(工厂模式)
工厂模式:父类决定实例的生成方式,但并不决定所要生成的具体的类。示例:制作身份证Product类:(Product)package framework;public abstract class Product { public abstract void use();}Factory类:(Factory)package framework;public abstract class Fac...原创 2018-04-12 10:24:31 · 111 阅读 · 0 评论 -
Composite模式(组合模式)
Composite模式:能够使容器与内容具有一致性,创造出递归结构(文件夹与文件)(递归)示例:列出文件与文件夹的一览Entry 抽象类:(Component)public abstract class Entry { public abstract String getName(); // 获取名字 public abstr...原创 2018-04-16 14:34:22 · 154 阅读 · 0 评论 -
Decorator模式(装饰模式)
Decorator模式:不断地为对象添加装饰的设计模式示例:给文字添加装饰边框Display抽象类:(Component)public abstract class Display { public abstract int getColumns(); // 获取横向字符数 public abstract int getRows(); ...原创 2018-04-16 16:19:44 · 117 阅读 · 0 评论 -
Visitor模式(访问者模式)
Visitor模式:数据结构与处理被分离开。Visitor(访问者)负责对数据结构中每个具体的元素声明一个用于访问XXX的visit(XXX)方法ConcreteVisitor(具体的访问者)负责实现Visitor角色所定义的接口Element(元素)表示Visitor角色的访问对象ConcreteElement实现Element定义的接口ObjectStructure(对象结构)负责处理Elem...原创 2018-04-17 09:53:01 · 181 阅读 · 0 评论 -
Chain of Responsibility模式(责任链模式)
Chain of Responsibility模式:推卸责任Handler(处理者)定义处理请求的接口;知道下一个处理者是谁ConcreteHandler(具体处理者)处理请求的具体角色优点:(1)弱化了发出请求的人和处理请求的人之间的关系(2)可以动态改变职责链缺点:会导致处理延迟·...原创 2018-04-17 11:10:07 · 174 阅读 · 0 评论 -
Adapter模式(适配器模式)
适配器的英文是Adapter,意思是“使......相互适合的东西”。它位于实际情况与需求之间,填补两者之间的差异。Adapter模式分为两种:1、类适配器模式(使用继承的适配器) 电源的比喻示例程序实际情况交流100伏特Banner类(showWithParen、showWithAster)变换装置适配器PrintBanner类需求直流12伏特Print接口(printWeak、printStr...原创 2018-04-11 20:25:14 · 155 阅读 · 0 评论 -
Facade模式(外观模式)
Facade模式:可以为互相关联在一起的错综复杂的类整理出高层接口。Facade代表构成系统的许多其他角色的简单窗口,向系统外部提供高层接口SystemA这些角色各自完成自己的工作(1)递归地使用Facade模式当“在调用那个类之前先调用这个类,在调用那个方法之前需要现在这个类注册”的时候,意味着我们需要引入Facade角色。...原创 2018-04-17 14:37:53 · 132 阅读 · 0 评论 -
Mediator模式(中介者模式)
Mediator模式:组员向仲裁者报告,仲裁者向组员下达指示,组员之间不相互询问和互相指示。Mediator(仲裁者、中介者)定义与Colleague角色进行通信和做出决定的接口ConcreteMediator(具体的仲裁者、中介者)负责实现Mediator角色的接口Colleague(同事)负责定义与Mediator角色进行通信的接口ConcreteColleague(具体的同事)负责实现Col...原创 2018-04-17 16:22:09 · 183 阅读 · 0 评论 -
Observer模式(观察者模式 / 发布-订阅模式)
Observer模式:当观察对象的状态发生变化时,会通知观察者。适用于根据对象状态进行相应处理的场景。Subject(观察对象)表示观察对象ConcreteSubject(具体的观察对象)表示具体的被观察对象Observer(观察者)接受来自Subject角色的状态变化的通知ConcreteObserver(具体的观察者)具体的Observer...原创 2018-04-17 21:20:47 · 157 阅读 · 0 评论 -
Template Method模式(模板模式)
模板模式:在父类中定义处理流程的框架,在子类中实现具体处理。名字说明AbstractDisplay只实现了display方法的抽象类CharDisplay实现open、print、close方法的类StringDisplay实现open、print、close方法的类Main测试程序行为的类AbstractDisplay类:(AbstractClass)public abstract class ...原创 2018-04-11 22:14:46 · 115 阅读 · 0 评论 -
Commond模式(命令模式)
Command(命令)负责定义命令的接口ConcreteCommand(具体的命令)负责实现在Command角色中定义的接口Receiver(接收者)命令接收者Client(请求者)负责生成ConcreteCommand角色并分配Receiver角色Invoker(发动者)开始执行命令的角色...原创 2018-04-19 14:47:04 · 1014 阅读 · 0 评论