単一責任の原則とは何ですか?
コンピューターのプログラミングと設計において、単一の責任の原則は、プログラム内のクラスが大規模なアプリケーションで1つの機能のみを実行するという見解を支持する概念です。 このアイデアは、カプセル化などのオブジェクト指向プログラミングの理想の一部を部分的に促進します。これは、クラス全体が単一の責任の実行に焦点を当て、外部クラスにほとんど依存しないためです。 同時に、単一のオブジェクトの機能はオブジェクトが処理しているデータから分離されているため、初期オブジェクト指向プログラミングの概念のいくつかとは相反します。いくつかの中央データ。 単一の責任原則は、責任駆動設計として知られる設計モデルのタイプの基礎です。
単一の責任原則の例は、従来の電話ハンドセットの形をとることができます。 一部の設計原則では、ハンドセットを電話回線からの入力とスピーカーからの出力の送信の両方を処理する単一のオブジェクトと見なします。 単一のオブジェクトに単一の責任のみを持たせる単一の責任モデルでは、ハンドセットは、電話回線からの入力のみを受信したり、データの出力のみを行うなど、単一の機能を実行する複数の個別のオブジェクトで構成されますイヤーピース。
単一の責任原則を使用することで可能になる利点の1つは、非常に高いレベルの抽象化とモジュール性です。 ハンドセットの例では、電話回線からの入力またはユーザーへの信号の出力方法のいずれかを変更できますが、それらは同じインターフェイスのインターフェイスに準拠している限り、隣接するクラスに影響を与えません。 さらに、特定のコンポーネントの再利用性は非常に高くなる可能性があります。これは、各クラスが完全にカプセル化され、周囲のオブジェクトにほとんど依存しないため、1つの責任に集中するためです。
単一の責任原則が生み出す複雑な問題は、すべてが同じデータで動作する大量のクラスとオブジェクトです。 これは、大量のオーバーヘッドと複雑な設計プロセスを意味する場合があります。 また、プログラムの1つの部分が何千もの小さなクラスファイルで構成される可能性があるため、大きなプログラムのデバッグが困難になる可能性があります。
単一の責任原則が責任駆動型の設計を通じて適用される場合、データとデータの操作に使用されるメソッドは、設計目的のために分離されます。 これにより、設計に一定の自由度、カプセル化、モジュール性がもたらされますが、同時にデータとのやり取りを試みる多数のクラスを促進するために使用する必要のある多数の中間パターンと設計を生成することもできます。 一方、オブジェクトのデータとそれを操作するために使用されるメソッドがすべて単一の複数責任オブジェクトにバインドされている場合、システムのスケーリング、変更、または複雑化に伴い、コードの修正が難しくなる可能性があります。