階層を再コンパイルせずにクラスの階層にメンバーを追加するにはどうすればよいですか?階層が
LandTransport extends Transport
Car extends LandTransport
GetCapacity
階層にメソッドを追加する必要があります。ビジターパターンを使用してこれを行う方法は?
階層を再コンパイルせずにクラスの階層にメンバーを追加するにはどうすればよいですか?階層が
LandTransport extends Transport
Car extends LandTransport
GetCapacity
階層にメソッドを追加する必要があります。ビジターパターンを使用してこれを行う方法は?
インターフェイスはコンパイル時に定義されるため、実行時に修正されます。ただし、実行時のポリモーフィズムを介して、ビジター パターンを使用して既存のクラスに機能を追加できます。
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 { } ...