у меня такой интерфейс
class IVersion
{
public:
virtual char * get_version() const = 0;
virtual bool is_compatible(const IVersion& other) const = 0;
};
У меня есть набор классов «Устройства», каждый из которых должен поддерживать указанный выше интерфейс, чтобы я мог проверить совместимость между устройствами. Для этого я публично наследую каждое устройство от вышеуказанного класса IVersion.
Теперь, поскольку я наследую от IVersion (и от принципа замещения Лискова), это означает, что устройство является версией. Но фактическая связь, которую я хочу, заключается в том, что устройство имеет версию.
Я хочу, чтобы все устройства поддерживали методы, как в IVersion, но способ, которым я это сделал, я думаю, неверен. Может ли кто-нибудь предложить лучший способ? Я могу использовать композицию, но тогда мне нужно будет добавить методы сейчас в IVersion в базовый класс устройства, а затем внутренне использовать реализацию IDevice. Это лучший способ сделать то, что я хочу достичь?
IVersioned
, таким образом, устройство имеет версию. - person Iridium   schedule 27.01.2015