设计模式
《大话设计模式》的笔记。
花开成景花落为诗
But are we all lost stars.Trying to light up the dark.
展开
-
大话设计模式-访问者模式学习总结
一、概念访问者模式,表示一个作用于某对象结构中的各元素的操作。它使你可以在不改变各元素的前提下定义作用于这些元素的操作。二、类图及基本代码//抽象访问者public abstract class Visitor { public abstract void VisitorConcreteElementA(ConcreteElementA concreteElementA); pub原创 2018-01-12 10:40:58 · 238 阅读 · 0 评论 -
大话设计模式-备忘录模式学习总结
一、概念:备忘录:在不破坏封装性的前提下,捕获一个对象的内部状态,并在对象之外保存这个状态,这样以后可以将该对象恢复到原来保存的状态。二、类图以及基本代码//发起者public class Originator { private String state; public String getState() { return state; } publi原创 2017-12-18 11:34:58 · 385 阅读 · 0 评论 -
大话设计模式-适配器模式学习总结
一、概念将一个类的接口转换成客户希望的另外一个接口。使得原本由于接口不兼容而不能一起工作的类一起工作。二、类图及基本代码对象适配器模式:关心类之间的组合,可以由一个或多个类组合成一个更大的系统,一般只存在继承关系和实现关系。(泛化和继承其实是一个逆过程 泛化就是有子类抽象出一个父类 而继承就是由父类具体化一个子类 例如足球比联赛跟什么西甲 意甲 英超之间就是泛化/继承的关系) 类适配器模式:关原创 2017-12-18 20:01:12 · 332 阅读 · 0 评论 -
大话设计模式-外观模式学习总结
一、概念外观模式,为子系统中的一组接口提供一个一致的界面,此模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。二、类图及基本代码//四个子系统类class SubSystemOne{ public void MethodOne(){ System.out.println("子系统方法一"); }}class SubSystemTwo{ publ原创 2017-12-20 15:26:15 · 221 阅读 · 0 评论 -
大话设计模式-组合模式学习总结
一、概念组合模式:将对象组合成树型结构以表示部分-整体的层次结构,组合模式使用户对单个对象和组合对象的使用具有一致性。二、类图及基本代码Leaf是叶子节点,没有子节点。 Composite是枝节点,用于存储子部件,实现与子部件相关的行为,如Add,Remove等。 Component是一个接口,用于访问和管理子部件。/* * 声明一个接口负责访问和管理Component的子部件 */pub原创 2017-12-21 19:28:18 · 223 阅读 · 0 评论 -
大话设计模式-观察者模式学习总结
一、概念观察者模式定义了一种一对多的依赖关系,让多个观察者对象同时监听某个主题对象。这个主题对象在自身的状态发生改变时则会通知所有观察者对象,让它们能更新自身的状态。因为这个特点又名:发布-订阅模式。二、类图及基本代码//抽象主题类public abstract class Subject { private List<Observer> observers=new ArrayList<>原创 2017-12-21 20:08:26 · 256 阅读 · 0 评论 -
迭代器模式学习总结
一、概念一个聚合对象具有两个职责,一是存储内部的数据,二是遍历内部数据。从依赖性看,前者是聚合对象的根本属性,后者则是可以变化,分离的。将聚合对象的遍历行为抽取为一个迭代器,专门提供遍历聚合对象内部数据的行为,这边是迭代器。二、类图三、实例之商品名称遍历代码:/* * 抽象迭代器类 */public interface AbstractIterator { public void ne原创 2018-01-01 10:37:21 · 438 阅读 · 0 评论 -
策略模式学习总结
一、概念及类图在策略模式中,定义一系列算法,并将每一个算法封装起来,使它们可以相互替换,策略模式让算法独立于使用它的客户而运行,是一种对象行为模式。 Strategy是抽象策略类,定义了算法的公共方法。 ConcreteStrategyA,B是具体算法类,封装了算法的具体实现。 Context表示环境类,负责维护Strategy的一个实例。二、实例之电影票打折//打折类:抽象策略类publi原创 2018-01-01 15:17:50 · 411 阅读 · 0 评论 -
桥接模式学习总结
一、概念桥接模式将抽象部分(Abstraction)和实现部分(Implementor)相分离,使它们可以相互独立地变化,是一种对象结构型模式。 类图如下: 二、实例之跨平台系统视频播放器//抽象视频文件类---Implementorpublic interface VideoFile { public void decode(String osType,String fileName原创 2018-01-03 23:07:44 · 438 阅读 · 0 评论 -
大话设计模式-命令模式学习总结
一、概念命令模式将一个请求封装成一个对象,从而使你可用不同的请求对客户进行参数化;对请求排队或者记录请求日志,以及支持可撤销的操作。二、类图及基本代码//抽象命令public abstract class Command { protected Receiver receiver; public Command(Receiver receiver){ this.re原创 2018-01-05 20:25:00 · 202 阅读 · 0 评论 -
大话设计模式-职责链模式学习总结
一、概念职责链模式:使多个对象都有机会处理请求,从而避免请求的发送者和接受者之间的耦合关系。将这个对象连成一条链,并沿着这条链传递该请求,直到有一个对象接受它为止。二、类图及基本代码//处理请示的接口public abstract class Handler { protected Handler successor; //设置后继者 public void SetSucc原创 2018-01-07 15:06:32 · 210 阅读 · 0 评论 -
大话设计模式-中介者模式学习总结
一、概念中介者模式,用一个中介对象来封装一系列的对象交互。中介者使各对象不需要显式地相互引用,从而使其耦合松散,而且可以独立地改变它们之间的交互。二、类图及基本代码//抽象中介者类public abstract class Mediator { //定义一个抽象的发送消息方法,得到同事对象和发送消息 public abstract void Send(String message,原创 2018-01-08 20:28:47 · 287 阅读 · 0 评论 -
大话设计模式-模板方法模式
一、概念模板方法模式,定义一个操作中的算法的骨架,而将一些步骤延迟到子类中。模板方法使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。二、类图三、实例之考试//考试试卷public abstract class TestPaper { //模板方法 public void TestQuestion1() { System.out.println原创 2018-01-16 12:03:46 · 238 阅读 · 0 评论 -
大话设计模式-装饰模式学习总结
一、概念装饰模式,动态地给一个对象添加一些额外的职责,就增加功能来说,装饰模式比生成子类更为灵活。二、类图三、实例之穿衣//抽象装饰者public abstract class Finery extends Person{ private Person component; public void Decorate(Person component){ this.co原创 2018-01-14 14:17:47 · 166 阅读 · 0 评论 -
简单工厂模式,工厂方法模式与抽象工厂模式学习总结
一、概念及类图1、简单工厂模式(静态工厂模式) 在简单工厂模式中,工厂类可以根据参数的不同返回不同的类的实例。 2、工厂方法模式(多态模式) 工厂方法模式的核心是抽象工厂类Factory,各种具体工厂类继承抽象工厂类并实现在抽象工厂类中定义的工厂方法,从而让客户只关心抽象产品和抽象工厂,不用管具体返回的是哪一种具体产品,也不用关心它是如何被具体工厂创建的。 3、抽象工厂模式 该模式原创 2018-01-01 14:30:25 · 2188 阅读 · 0 评论 -
大话设计模式-建造者模式学习总结
一、概念建造者模式,将一个复杂对象的构建和它的表示分离,使得同样的构建过程可以创建不同的表示。二、类图及基本代码//产品类public class Product { List<String> parts=new ArrayList<>(); /* * 添加部件 */ public void Add(String part){ parts.原创 2018-01-13 14:36:33 · 231 阅读 · 0 评论 -
大话设计模式-单例模式学习总结
一、概念单例模式,保证一个类只有一个实例,并提供一个访问它的全局访问点 。二、基本代码//单例类public class Singleton { private static Singleton singleton;//保存自己的唯一实例 private Singleton(){//不允许外界进行new Singleton()得到实例对象 } public static原创 2018-01-13 11:13:12 · 164 阅读 · 0 评论 -
大话设计模式-原型模式学习总结
一、概念原型模式,用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象二、类图三、实例之简历潜复制:被复制对象的所有属性都含有与原来的对象相同的值,而所有对象的引用都仍指向原有的对象。 深复制:把引用对象的变量指向复制过的新对象,而不是原有的被引用的对象。下面为简历类的浅复制及深复制在原型模式中的应用。//工作经历类public class WorkExperience impleme原创 2018-01-13 12:21:29 · 252 阅读 · 0 评论 -
大话设计模式-享元模式学习总结
一、概念享元模式,运用共享技术有效地支持大量细粒度的对象的复用。二、类图及基本代码//抽象享元类public abstract class Flywight { public abstract void Operation(int extrinsicstate);}//具体享元类public class ConcreteFlyweight extends Flywight{ @原创 2018-01-10 11:37:28 · 207 阅读 · 0 评论