我一直在四处寻找,但找不到太多相关信息,但是从一个界面交叉转换到另一个界面会被认为是糟糕的设计吗?这是我正在使用的代码示例:
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 界面。