私はこのようなインターフェースを持っています
class IVersion
{
public:
virtual char * get_version() const = 0;
virtual bool is_compatible(const IVersion& other) const = 0;
};
デバイス間の互換性を確認できるように、すべてのクラスで上記のインターフェイスがサポートされている必要があります。そのために、上記の IVersion クラスから各デバイスをパブリックに継承します。
IVersion (および Liskov Substitution Principle) から継承しているため、デバイスがバージョンであることを意味します。しかし、私が望む実際の関係は、デバイスにバージョンがあるということです。
IVersion のようにすべてのデバイスでメソッドをサポートしたいのですが、私が行った方法は正しくないと思います。誰かがより良い方法を提案できますか? コンポジションを使用できますが、IVersion のメソッドをデバイスの基本クラスに追加し、内部で IDevice 実装を使用する必要があります。これは私が達成したいことをするための最良の方法ですか?