随笔 - 37  文章 - 29  trackbacks - 0


常用链接

留言簿(3)

随笔分类

随笔档案

最新评论

阅读排行榜

评论排行榜

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)  编辑  收藏 所属分类: 设计模式

只有注册用户登录后才能发表评论。


网站导航: