デザインモードノート(7)--ブリッジモード

1336 ワード

ブリッジモード
継承がもたらすサブクラスと親の強い依存関係は、多重性とプログラムの柔軟性を制限します.
できるだけ合成/集約を使用し、できるだけクラス継承を使用しないでください.
集約は、オブジェクトAがオブジェクトBを含むことができるが、オブジェクトBがオブジェクトAの一部であるとは限らないなどの弱い「所有」関係を表す.合成は強い「持つ」関係を表し、厳格な部分と全体の関係である.
合成の最も明らかな特徴は、部分と全体が同じライフサイクルを持っていることです.
合成集約多重化の原則の利点は、各クラスがカプセル化され、単一のタスクに集中することを維持するのに役立つことである.クラスとクラスが継承する階層は、比較的小さな規模を維持できます.
GOFのブリッジモードの定義は「抽象部分とその実装部分を分離し,独立して変化させることができる」である.
抽象と実装の分離:抽象クラスとその派生クラスは、自分のオブジェクトを実装するために使用されます.ブリッジモードは、複数の分類があり、各分類が独立して変化する必要がある場合に適しています.

public abstract class math
{
    public abstract void select();
}
public class mathanalysis extends math
{
    @override
    public void select()
    {
        "shufen"
    }
}

public class advancemath extends math
{
    @override
    public void select()
    {
        "gaoshu"
    }
}

public abstract class departments
{
    protected math mathcourse;
    public void setcourse(math m)
    {
        mathcourse = m;
    }
    public abstract void select();
}

public class computer extends departments
{
    @override
    public void select()
    {
        "         "   
        ((math)mathcourse).select();
    }
}
public class mathematics extends departments
{
    @override
    public void select()
    {
        "        "   
        ((math)mathcourse).select();
    }
}