1

実行時に、TableA、TableB、または TableC が作成される場合があります。

public class TableA  {
    public void methodA()  {
        doSomethingA();
    }

    public void methodB() {
        doSomethingB();
    }
}

public class TableB extends TableA  {
    @Override
    public void methodA()  {            
    }

    protected void methodC()  {
    }
}

public class TableC  extends TableA {
    @Override
    public void methodB()  {            
    }

    public void methodD()  {
    }
}

TableX という別のテーブルがあります。

public class TableX  extends TableA {

    public void methodX()  {       
    }

    public void methodY()  {
    }
}

今、TableX の機能が必要です。methodX()、methodY() は、TableB、TableC に適用されます。

これらはTableX固有のモジュール機能であるため、methodX()、methodY()を取り出してTableAに入れることはできません。

そのため、実行時に TableA、TableB、TableC、TableX(TableA)、TableX(TableB)、TableX(TableC) が作成される場合があります。どのようなデザイン パターンも適用できるので、どのようなテーブルを作成しても、それが TableA から拡張されている限り、TableX もそれをサポートできます。

4

2 に答える 2

3

TableAトップオブジェクトに機能を追加することについて話していると思います。デコレータパターンは、おそらくあなたが探しているものです。

class TableX extends TableA {
    private TableA innerObject;
    public TableX(TableA inner) { innerObject = inner; }

    public methodA() {
        innerObject.methodA(); 
        ....
    }

    ...
}

TableB bObject = new TableB();
TableX decoratedBObject = new TableX(bObject);
decoratedBObject.methodA();
于 2012-10-18T07:56:27.743 に答える
1

私はあなたが何を意味するのか理解するのに苦労しましたが、あなたが望むのはアダプターパターンであり、ラッパーとも呼ばれます。

于 2012-10-18T06:52:53.133 に答える