7、BRIDGE—早上碰到MM,要說早上好,晚上碰到MM,要說晚上好;碰到MM穿了件新衣服,要說你的衣服好漂亮哦,碰到MM新做的發(fā)型,要說你的頭發(fā)好漂亮哦。不要問我“早上碰到MM新做了個發(fā)型怎么說”這種問題,自己用BRIDGE組合一下不就行了
【GOF95】在提出橋梁模式的時候指出,橋梁模式的用意是"將抽象化(Abstraction)與實(shí)現(xiàn)化(Implementation)脫耦,使得二者可以獨(dú)立地變化"。這句話有三個關(guān)鍵詞,也就是抽象化、實(shí)現(xiàn)化和脫耦。
/**
* 抽象化角色
*/
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
}
}
/**
* 實(shí)現(xiàn)化角色
*/
public abstract class Implementor {
public abstract void operationImp();
}
/**
* 具體實(shí)現(xiàn)化角色A
*/
public class
ConcreteImplementorA extends Implementor {
public void operationImp() {
System.out.println("Do something...");
}
}
/**
* 具體實(shí)現(xiàn)化角色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 閱讀(850)
評論(0) 編輯 收藏 所屬分類:
設(shè)計(jì)模式