私は探し回っていますが、これについてはあまりわかりませんが、あるインターフェイスから別のインターフェイスへのクロスキャストは悪いデザインと見なされますか?これが私が使用しているコードのサンプルです:
class IShip {
// strictly ship_like interface
// i.e. move, attack, dock, etc.
};
class Sim_object {
// all game objects are derived from this and represents component in composite pattern
// get_name()
// get_location()
// add
// remove
// etc.
};
template<typename T>
class Group : public Sim_object {
// composite functions
// add
// remove
// display
// map<T> container;
};
class Ship_group : public Group<IShip>, public IShip {
// added IShip functionality
};
class Ship : public Sim_object, public IShip {
// actual ship object
};
とにかく、私はMVCを使用しており、コントローラーがIShipオブジェクトを操作し、それらがコンポジットであるかリーフであるかに応じて、いくつかの機能を実行します。私の質問は、別のインターフェイスを取得するためにIShipからSim_objectに移動する必要がある場合があります(dynamic_castが必要です)。これは悪い設計/実践と見なされますか?Sim_objectコマンドにアクセスするためだけに、IShipインターフェイスを汚染したくありませんでした。