7、BRIDGE—早上碰到MM,要说早上好,晚上碰到MM,要说晚上好;碰到MM穿了件新衣服,要说你的衣服好漂亮哦,碰到MM新做的发型,要说你的头发好漂亮哦。不要问我“早上碰到MM新做了个发型怎么说”这种问题,自己用BRIDGE组合一下不就行了
【GOF95】在提出桥梁模式的时候指出,桥梁模式的用意是"将抽象化(Abstraction)与实现化(Implementation)脱耦,使得二者可以独立地变化"。这句话有三个关键词,也就是抽象化、实现化和脱耦。
/**
* 抽象化角色
*/
public abstract class Abstraction {
protected Implementor imp;
public void setImp(Implementor imp) {
this.imp = imp;
}
public void operation() {
imp.operationImpl();
}
}
/**
* 修正抽象化角色A
*/
public class
RefinedAbstractionA extends Abstraction {
public void operation() {
//improved logic
}
}
/**
* 修正抽象化角色B
*/
public class
RefinedAbstractionB extends Abstraction {
public void operation() {
//improved logic
}
}
/**
* 实现化角色
*/
public abstract class Implementor {
public abstract void operationImp();
}
/**
* 具体实现化角色A
*/
public class
ConcreteImplementorA extends Implementor {
public void operationImp() {
System.out.println("Do something...");
}
}
/**
* 具体实现化角色B
*/
public class
ConcreteImplementorB extends Implementor {
public void operationImp() {
System.out.println("Do another thing...");
}
}
public class Client {
public static void main(String[] args) {
Abstraction abs = new
RefinedAbstractionA();
abs.setImp(new
ConcreteImplementorA()); //等于把RefinedAbstractionA和ConcreteImplementorA组合起来了
abs.operation();
abs.setImp(new
ConcreteImplementorB()); //等于把RefinedAbstractionA和ConcreteImplementorB组合起来了
abs.operation();
//或者再换RefinedAbstractionB
//...
}
}
posted on 2008-02-01 16:20
EvanLiu 阅读(846)
评论(0) 编辑 收藏 所属分类:
设计模式