0

階層を再コンパイルせずにクラスの階層にメンバーを追加するにはどうすればよいですか?階層が

LandTransport extends Transport
Car extends LandTransport

GetCapacity階層にメソッドを追加する必要があります。ビジターパターンを使用してこれを行う方法は?

4

1 に答える 1

0

インターフェイスはコンパイル時に定義されるため、実行時に修正されます。ただし、実行時のポリモーフィズムを介して、ビジター パターンを使用して既存のクラスに機能を追加できます。

1 つは訪問可能で 2 番目の訪問者である 2 つのインターフェイスを作成し、訪問者を訪問可能オブジェクトに渡し、内部で GetCapacity ロジックを計算します。

class myClass;

class visitor {
virtual void handle(myClass cl);

}

class iVisitable {
 virtual void visit(visitor& v);
}



class myClass : public iVisitable{
  void visit(visitor& v){
   v.handle(this);
}
}

//Put getCapacity logic here and pass it to myClass
class getCapacityVisitor : iVisitor { } ...
于 2012-04-16T18:00:00.910 に答える