web-dev-qa-db-ja.com

OOPすべてのSOLID OOP設計原則を実行していることをいくらか代表する設計パターン?

私はオブジェクト指向の設計原則コース(SOLID)をトレーニング機関で教えようとしています。また、学生にいくつかのOOPファクトリー、シングルトンなどのデザインパターンを教えたいと思います。SOLIDの間に1対1の一致はないことを知っています原則とOOPデザインパターンですが、すべてのSOLIDデザイン原則を含むパターンを学生に紹介したいと思います。

何か案は?

私は実際にオブザーバーパターンに適合させようとしていますが、すべてのSOLID原則に準拠し続けます。

2
Tazo Man

ここでコミュニティの間で最も人気のあるデザインパターンの1つは 戦略パターン です。はい、このパターンを中心にサンプルコードを作成すると、すべての [〜#〜] solid [〜#〜] の原則を示すことができます。

  • S =は、各戦略サブクラスが1つのタスクのみを担当し、「コンテキスト」クラスが戦略クラスに属する責任を負わない場合に満たされます。
  • O =コンテキストの内部を変更する必要なしに(「変更のためにクローズ」)、後で新しい戦略を追加できます(「拡張のためにオープン」)。
  • L =これは、どのサブクラスのセマンティクスも変更せずに、ストラテジーインターフェイスで定義されたセマンティクスを使用してストラテジーサブクラスを正しく実装することを意味します。サブクラスがストラテジーを使用してコンテキストの一部を分割する方法でストラテジーインターフェイスを実装する場合、LSPは実行されません。
  • I =は、戦略基本クラスが小さな単一目的のインターフェイス(1つの「実行」メソッドなど)のみを提供する場合に満たされます
  • D =コンテキストは完全に抽象戦略インターフェースに依存し、外部から(たとえば、構築時に)具体的な戦略を「注入」し、たとえば、サブクラスの固定セットや可用性については何も仮定しません。特定のサブクラスの。

パターン自体はコードがSOLIDであることを保証するものではなく、SOLIDの原則は、パターンを正しく実装するのに役立ちます。正しい例だけでなく、学生に示すことを検討してください。 SOLIDの原則を適用するだけでなく、戦略パターンのコンテキストでの反例も適用し、5つの原則のそれぞれを破るコードを示します。さらに良いことに、これを彼らのための演習にします。

15
Doc Brown