设计模式
洛兰相遇
欧拉欧拉欧拉欧拉欧拉欧拉欧拉欧拉欧拉欧拉欧拉欧拉欧拉欧拉欧拉欧拉欧拉欧拉
haha
展开
-
02工厂方法模式
工厂方法模式 笔记 ①定义: 定义一个用于创建对象的接口,让子类决定实例化哪一个类。 ②生产面包: --所有面包都继承了面包师BreadMaker这个类。 BreadMaker这个类有一个制作面包的方法 GetBread(); --定义一个 接口 IFactory ,里边有一个方法为 生产面包 interface IFactory { BreadMa原创 2016-12-31 12:16:15 · 248 阅读 · 0 评论 -
19中介者模式
中介者模式 笔记 ①定义: 用一个中介对象来封装一系列的对象交互。中介者使各个对象不需要显示地互相引用,从而使其耦合松散,而且可以独立地改变它们之间的交互。 ②代码: //抽象中介者 public abstract class Mediator{ public abstract void Send(String message , Colleague colleag原创 2016-12-31 12:58:53 · 238 阅读 · 0 评论 -
21访问者模式
访问者模式 (最复杂的) 笔记 ①定义: 表示一个作用于某对象结构中的各元素的操作。它使你可以在不改变各元素的类的前提下定义作用于这些元素的新操作。 ②代码: //抽象访问者,声明访问者可以访问哪些元素 public abstract class Visitor{ public abstract void VisitConcreteElementA(Concret原创 2016-12-31 13:02:02 · 339 阅读 · 0 评论 -
22责任链模式
责任链模式 笔记 ①定义: 使多个对象都有机会处理请求,从而避免请求的发送者和接受者之间的耦合关系。将这个对象连成一条链,并沿着这条链传递该请求,直到有一个对象处理它为止。 ②代码: //处理请示的接口 public abstract class Handler{ protected Handler successor; //设定被授权者 public void原创 2016-12-31 13:03:14 · 328 阅读 · 0 评论 -
23迭代器模式
迭代器模式 笔记 ①定义: 提供一种方法顺序访问一个聚合对象中的各个元素,而又不暴露该对象的内部表示 //很多高级语言都有将迭代器模式整合到语言中。 //迭代器模式分离了集合对象的遍历行为,它抽象出一个迭代器类来负责具体的遍历行为,这样做的好处是既不暴露集合的内部结构,又可以让外部代码以透明的方式访问集合内部数据。 ②适用的地方: 当需要访问一个聚集对象的内容而又原创 2016-12-31 13:05:22 · 254 阅读 · 0 评论 -
24解释器模式
解释器模式 笔记 ①定义: 给定一个语言,定义它的文法的一种表示,并定义一个解释器,这个解释器使用该表示来解释语言中的句子。 ②代码: //抽象表达式 public abstract class AbstractExpression{ //抽象解释方法 public abstract void Interpret(Context context); } //终端解原创 2016-12-31 13:06:17 · 211 阅读 · 0 评论 -
18备忘录模式
备忘录模式 笔记 ①定义: 在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。这样以后就可以将该对象恢复到原型保存的状态。 ②代码: //Originator public class Originator{ private String State; //建立状态存储对象 public Memento CreateMemento(){ r原创 2016-12-31 12:57:16 · 311 阅读 · 0 评论 -
01六大设计原则
--最近开始点设计模式这个技能,用的是《设计模式其实很简单》这本书,以下是笔记。 一、设计模式 Design Pattern: >是一套面向对象的代码设计经验总结,是在编程领域被反复使用、被多数人知晓、而且经过分类整理的代码设计方法。 二、使用设计模式的目的: >为了可重用代码、让代码更容易被他人理解、保证代码可靠性。也让代码编写实现工程化。 //设计模式理论奠基人 GoF (G原创 2016-12-31 12:10:19 · 232 阅读 · 0 评论 -
20命令模式
命令模式 笔记 ①定义: 将一个请求封装为一个对象,从而使用户可用不同的请求对客户进行参数化。对请求排队或记录请求日志,并支持可撤销的操作。 ②代码: //抽象命令 public abstract class Command{ protected Receiver receiver; //构造函数 public Command(Receiver receiver原创 2016-12-31 13:00:40 · 215 阅读 · 0 评论 -
04单例模式
单例模式 笔记 ①定义: 保证一个类仅有一个实例,并提供一个访问它的全局访问点。 ②代码: public class Singleton { private static Singleton singInstance; private Singleton() {..} //私有话构造函数,对象只由类本身实例化 public static Singleton G原创 2016-12-31 12:22:12 · 182 阅读 · 0 评论 -
05建造者模式
建造者模式/生成器模式 笔记 ①定义: 将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。 ②代码: //抽象的建造者类 public abstract class Builder{ public abstract void BuildPartA(); public abstract void BuildPartB(); public原创 2016-12-31 12:25:14 · 189 阅读 · 0 评论 -
17观察者模式
观察者模式 笔记 ①定义: 观察者模式定义了一种一对多的依赖关系,让多个观察者对象同时监听某一个主题对象。这个主题对象在状态发生改变时,会通知所有观察者对象,使它们能够自动更新自己。 ②代码: //抽象的观察者类 public abstract class Observer{ public abstract void Update(); } //具体的观察者 pub原创 2016-12-31 12:55:56 · 350 阅读 · 0 评论 -
16状态模式
状态模式 笔记 ①定义: 当一个对象的内在状态改变时允许改变其行为,这个对象看起来像是改变了其类。 ②代码: //抽象的状态类 public abstract calss State{ public String stateName; public abstract void Handle(Context context); } //具体状态A public class原创 2016-12-31 12:54:20 · 183 阅读 · 0 评论 -
03抽象工厂模式
抽象工厂模式 笔记 ①定义: 提供一个创建一系列相关或互相依赖对象的接口,而无需指定他们具体的类。 ②生产面包和披萨 --定义一个 接口 IFactory ,里边有 生产面包 和 生产披萨 的方法 interface IFactory { BreadMaker CreateBread( ); //增加了一个返回类型为PizzaMaker的接口方法 PizzaMaker原创 2016-12-31 12:20:35 · 172 阅读 · 0 评论 -
07桥接模式
桥接模式 笔记 ①定义: 将抽象部分与它的实现部分分离,使它们都可以独立地变化 ②代码: //Abstraction类 public class Abstraction{ Protected Implementor implementor; public void SetImplementor(Implementor implementor){ this.im原创 2016-12-31 12:38:36 · 197 阅读 · 0 评论 -
06原型模式
原型模式 -- 如何快速且精准地复制一个对象 (注意!复制出来的对象不是同一个) ①定义: 用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象 ②代码: //抽象原型类 public abstract class Prototype{ private String id; //构造函数 public Prototype(String id){ this原创 2016-12-31 12:36:34 · 218 阅读 · 0 评论 -
08适配器模式
适配器模式 笔记 ①定义: 将一个类的接口转换成客户希望的另外一个接口。 适配器模式有两种,类适配器模式和对象适配器模式 。 Java是单继承,所以这里只写对象适配器模式 ②代码: //客户期望的接口 public class Target{ //客户的基本请求 public void Request(){ System.out.println("客户发起了普通基本原创 2016-12-31 12:41:05 · 175 阅读 · 0 评论 -
09装饰模式
装饰模式 笔记 ①定义: 动态地给一个对象添加一些额外的职责,就增加功能来说,装饰模式比生成子类更为灵活。 ②代码: //组件抽象父类 public abstract class Component{ //抽象的基本操作 public abstract void Operation(); } //具体组件类 public class ConcreteCompone原创 2016-12-31 12:43:15 · 173 阅读 · 0 评论 -
10组合模式
组合模式 笔记 ①定义: 将对象组成树形结构以表示“部分-整体”的层次结构。 组合模式使得用户对单个对象和组合对象的使用具有一致性。 ②理解: 树和子树,即整体与部分。在树形结构中,部分和整体有着类似或相同的结构,所以可以将部分和 整体一致对待 ③代码: //树中分支节点与叶子节点的抽象父类 public abstract class Component{原创 2016-12-31 12:44:51 · 175 阅读 · 0 评论 -
11享元模式
享元模式 笔记 ①定义: 运用共享技术有效地支持大量细粒度的对象 ②代码: //享元类的接口 public abstract class Flyweight{ //抽象方法 public abstract void Operation(int i); } //共享的具体享元类 public class ConcreteFlyweight extends Flywe原创 2016-12-31 12:47:25 · 206 阅读 · 0 评论 -
12外观模式
外观模式 笔记 ①定义: 为子系统中的一组接口提供一个一致的界面,此模式定义了一个高层接口,这个接口使得这一子系 统更加容易使用。 ②代码: //子系统A public class SubA{ public void MethodA(){ System.out.println("子系统方法A执行!"); } } //子系统B public class Sub原创 2016-12-31 12:48:51 · 202 阅读 · 0 评论 -
13代理模式
代理模式 笔记 ①定义: 为其他对象提供一种代理以控制对这个对象的访问。 ②代码: //抽象的父类 public abstract class Subject{ public abstract void Request(); } //真实类 public class RealSubject extends Subject{ //覆盖父类的抽象方法 @Override原创 2016-12-31 12:50:05 · 212 阅读 · 0 评论 -
15策略模式
策略模式 笔记 ①定义: 策略模式定义了算法家族,分别封装起来,让它们之间可以互相替换,此模式让算法的变化不会影响到使用算法的客户。 ②代码: //抽象策略类 public abstract class Strategy{ public abstract void Algorithm(); } //上下文 public class Context{ Strateg原创 2016-12-31 12:53:02 · 141 阅读 · 0 评论 -
14模板方法模式
模板方法模式 (父类的方法调用了子类重写的方法..) 笔记 ①定义: 定义一个操作中的算法的骨架,而将一些步骤延迟到子类中。TemplateMethod使得子类可以不改变一个算法的结构即可重新定义该算法的某些特定步骤。 ②代码: //抽象模板类 public abstract class AbstractClass{ public abstract void Pri原创 2016-12-31 12:51:25 · 185 阅读 · 0 评论