「デザインモードシリーズ」---ブリッジモード


ブリッジモード、
    抽象部分とその実現部分を分離して、それらを独立に変化させることができます。  実現システムは多角度分類が可能で、それぞれの分類が変化する可能性があります。このような多角度分離によって彼らが独立して変化し、彼らの間の結合を減少させます。
/**
 * @author stefanie zhao
 * @date 2014-8-21   03:02:37
 */
public abstract class Implementor {

    public abstract void operation();

}
/**
 * @author stefanie zhao
 * @date 2014-8-21   03:03:23
 */
public class ConcreteImplementorA extends Implementor {

    /*
     * (non-Javadoc)
     * 
     * @see us.echo.pattern.bridge.Implementor#operation()
     */
    @Override
    public void operation() {
        System.out.println("A     ");

    }

}
/**
 * @author stefanie zhao
 * @date 2014-8-21   03:03:23
 */
public class ConcreteImplementorB extends Implementor {

    /*
     * (non-Javadoc)
     * 
     * @see us.echo.pattern.bridge.Implementor#operation()
     */
    @Override
    public void operation() {
        System.out.println("B     ");

    }

}
/**
 * @author stefanie zhao
 * @date 2014-8-21   03:04:21
 */
public class Abstraction {

    protected Implementor implementor;

    public void setImplementor(Implementor im) {
        this.implementor = im;
    }

    public void operation() {
        implementor.operation();
    }
}
/**
 * @author stefanie zhao
 * @date 2014-8-21   03:06:07
 */
public class RefinedAbstraction extends Abstraction {

    public void operation() {
        implementor.operation();
    }
}
public class Main {

    /**
     * @Description: TODO
     * @param @param args
     * @return void
     * @throws
     */
    public static void main(String[] args) {
        Abstraction ab = new RefinedAbstraction();

        ab.setImplementor(new ConcreteImplementorA());
        ab.operation();

        ab.setImplementor(new ConcreteImplementorB());
        ab.operation();

    }

}