私は周りを探索してきましたが、これについてはあまり見つけられませんでしたが、あるインタフェースから別のインタフェースへのクロスキャストは悪い設計と見なされますか?ここで私が使用しているコードのサンプルです:クロスキャストは、別のインターフェイスを取得するには、悪い設計と考えていましたか?
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
};
をとにかくが、私は彼らがコンポジットや葉であれば、私のコントローラはIShipオブジェクトを操作し、依存しますMVCを使用している、いくつかの機能を実行します。私の質問は、私は別のインターフェイス(dynamic_castを必要とする)を得るために、私はIShipからSim_objectに行く必要がある時です。これは悪いデザイン/練習と見なされますか?私は本当にSim_objectコマンドにアクセスするためにIShipインターフェイスを汚染したくはありませんでした。