Androidデザインモデルの構造型モデル


ブリッジモード
定義:抽象部分とその実現部分を分離し、それらを独立に変化させる.
/**
 *    
 */
public abstract class Implementor{
    public abstract void operation();
}

/**
 * Implementor     ImplementorA
 */
public class ImplementorA extends Implementor{

    @Override
    public void operation() {
        System.out.println("classA");
    }
}
/**
 * Implementor     ImplementorB
 */
public class ImplementorB extends Implementor{
    
    @Override
    public void operation() {
        System.out.println("classB");
    }
}

public abstract class Abstraction{
    protected Implementor implementor;
    
    public void setImplementor(Implementor implementor){
        this.implementor = implementor;
    }
    public abstract void operation();
}

public class RefinedAbstraction extends Abstraction{

    @Override
    public void operation() {
        implementor.operation();
    }
}
/**
 *      
 * @param args
 */
public static void main (String[] args){
    Abstraction abstraction = new RefinedAbstraction();
    abstraction.setImplementor(new ImplementorA());
    abstraction.operation();
    
    abstraction.setImplementor(new ImplementorB());
    abstraction.operation();
}

使用状況:
1.抽象とその実現との間に固定的な結合関係があることを望まない場合.
2.クラスの抽象および彼の実現がいずれもサブクラスを生成する方法によって拡張可能であるべきである場合.
3.一つの抽象クラスの実現部分に対する修正が顧客に影響を与えない場合.
アダプタモード
定義:クラスのインタフェースをお客様が望む別のインタフェースに変換します.
適用範囲:既存のクラスを使用するが、そのクラスのインタフェースが既存の要求に合致しない場合.
他の関係のないクラスや予見できないクラスと協働可能な多重化可能なクラスを作成する必要がある場合.
既存のサブクラスを使用する必要がありますが、インタフェースに一致するようにすべてをサブクラス化することはできません.オブジェクトアダプタは親に対して使用できます.
クラスインタフェースが適合する.