OOD とデザイン パターンを使用してパスワード モジュールを作成しています。モジュールは、記録可能なイベントのログを保持し、ファイルへの読み取り/書き込みを行います。基本クラスにインターフェイスを作成し、派生クラスに実装を作成しました。基本クラスに派生クラスが1つしかない場合、これは一種の悪臭ではないかと思います。この種のクラス階層は不要ですか? クラス階層を排除するために、もちろん、すべてを 1 つのクラスで実行し、まったく派生させないようにすることができます。これが私のコードです。
class CLogFile
{
public:
CLogFile(void);
virtual ~CLogFile(void);
virtual void Read(CString strLog) = 0;
virtual void Write(CString strNewMsg) = 0;
};
派生クラスは次のとおりです。
class CLogFileImpl :
public CLogFile
{
public:
CLogFileImpl(CString strLogFileName, CString & strLog);
virtual ~CLogFileImpl(void);
virtual void Read(CString strLog);
virtual void Write(CString strNewMsg);
protected:
CString & m_strLog; // the log file data
CString m_strLogFileName; // file name
};
今コードで
CLogFile * m_LogFile = new CLogFileImpl( m_strLogPath, m_strLog );
m_LogFile->Write("Log file created");
私の質問は、一方で、OOD プリンシパルに従い、最初にインターフェイスを作成し、派生クラスで実装していることです。一方、それはやり過ぎであり、物事を複雑にしますか? 私のコードはデザイン パターンを使用しないほど単純ですが、派生クラスによる一般的なデータのカプセル化に関しては、そこから手がかりを得ることができます。
最終的に、上記のクラス階層は適切ですか、それとも代わりに 1 つのクラスで行う必要がありますか?