`
Flyingh
  • 浏览: 17759 次
  • 性别: Icon_minigender_1
  • 来自: 西安
社区版块
存档分类
最新评论
文章列表
测试: import org.junit.Before; import org.junit.Test; public class CustomerTest { private Customer customer; @Before public void setUp() throws Exception { customer = new Customer("flyingh"); Movie movie = new Movie("haha1_movie", Movie.NEW_RELEASE); Movie movi ...
Interpreter Pattern:其意图是给定一个语言,定义它的文法表示,并定义一个解释器,这个解释器使用该标识来解释语言中的句子. Expression.java   package com.flyingh.dp.interpreter; public abstract class Expression { public abstract int interpret(Context ctx); }  Constant.java   package com.flyingh.dp.interpreter; public class Constant exte ...
Visitor Pattern:表示一个作用于某对象结构中的各元素的操作。它使你可以在不改变各元素类的前提下定义作用于这些元素的新操作(double dispatch)。 Acceptable.java   package com.flyingh.acceptable; import com.flyingh.visitable.Visitor; public interface Acceptable { void accept(Visitor visitor); void action(); }  Visitor.java   package com.f ...
  Mediator Pattern: 用一个中介对象来封装一系列关于对象交互行为. 为何使用Mediator? 各个对象之间的交互操作非常多;每个对象的行为操作都依赖彼此对方,修改一个对象的行为,同时会涉及到修改很多其他对象的行为,如果使用Med ...
Prototype Pattern:就是通过复制现在已经存在的对象来创建一个新的对象。当创建给定类的实例的过程很昂贵或很复杂时,就使用它。 Name.java package com.flyingh.dp.prototype; import java.io.Serializable; @SuppressWarnings("serial") public class Name implements Serializable { private String firstName; private String lastName; publi ...
Memento Pattern:在不破坏封闭的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。这样以后就可将该对象恢复到原先保存的状态。 Memento.java   public class Memento { private String state; public Memento(String state) { super(); this.state = state; } public String getState() { return state; } public void setState(String sta ...
享元模式以共享的方式高效地支持大量的细粒度对象. 1).FlyweightDemo.java   package com.flyingh.demo; public class FlyweightDemo { public static void main(String[] args) { String str1 = "abc"; String str2 = "a" + "bc"; String str3 = "abc"; String str4 = str3 + "& ...
Builder Pattern:可以将一个产品的内部表象与产品的生成过程分割开来,从而使一个建造过程生成具有不同的内部表象的产品对象。 Mobile.java   package com.flyingh.product; import java.util.List; public class Mobile { private List<String> list; public Mobile(List<String> list) { super(); this.list = list; } public List< ...
桥梁模式的用意是"将抽象化(Abstraction)与实现化(Implementation)脱耦,使得二者可以独立地变化"。这句话有三个关键词,也就是抽象化、实现化和脱耦. Lock.java   package com.flyingh.ilock; public interface Lock { void lock(); void unlock(); }   LockA.java package com.flyingh.lock; import com.flyingh.ilock.Lock; public class Lock ...
Chain Of Responsibility Pattern:很多对象由每一个对象对其下家的引用而连接起来形成一条链。请求在这个链上传递,直到链上的某一个对象决定处理此请求。发出这个请求的客户端并不知道链上的哪一个对象最终处理这个请求,这使系统可以在不影响客户端的情况下动态的重新组织链和分配责任。 1). Handler.java   package com.flyinh.ihandler; public interface Handler { void handleRequest(String str); }    HandlerA.java   packag ...
下面以Mac和PC的CPU和RAM为例,代码如下: Cpu.java   package com.flyingh.icpu; public interface Cpu { String cpuInfo(); }    MacCpu.java   package com.flyingh.cpu; import com.flyingh.icpu.Cpu; public class MacCpu implements Cpu { @Override public String cpuInfo() { // TODO Auto-generate ...

[置顶] Proxy

Proxy Pattern:对其他对象提供一种代理以控制对这个对象的访问,它的主要作用是为其他对象提供一种代理以控制对这个对象的访问。在某些情况下,一个对象不想或者不能直接引用另一个对象,而代理对象可以在客户端和目标对象之间起到中介的作用 1) Subject.java   package com.flyingh.isubject; public interface Subject { void fun1(); void fun2(); void fun3(); }    RealSubject.java   package com.flyingh ...

[置顶] State

State Pattern:当一个对象的内在状态改变时允许改变其行为,这个对象看起来像是改变了其类. 状态模式主要解决的是当控制一个对象状态的条件表达式过于复杂时的情况。把状态的判断逻辑转移到表示不同状态的一系列类中,可以把复杂的判断逻辑简化 下面以Player的几种状态为例,代码如下: State.java   package com.flyingh.istate; public interface State { void play(); void pause(); void quickForward(); void quickBackward() ...
Composite Pattern:意图是将对象组合成树形结构以表示部分-整体的层次结构,它使得用户对单个对象和组合对象的使用具有一致性。 下面以Iterator中的例子为例,不过,这里Department中除了含有Clerk外,也可以再含有子Department,它含有的子Department中也可以含有Clerk和Department,代码如下: DepartComponent.java package com.flyingh.abs; public abstract class DepartComponent { public void add(DepartCompo ...
Iterator Pattern:其意图是提供一种方法顺序访问一个聚合对象中得各个元素,而又不需要暴露该对象的内部表示. 下面以Boss输出各个Department中的所有Clerk为例(各个部门对Clerk的内部表示不同,如有的用Array,有的用List,Map......): Clerk.java package com.flyingh.bean; import com.flyingh.util.Sex; public class Clerk { private String id; private String name; private int ag ...
Global site tag (gtag.js) - Google Analytics