単一責任の原則とオープンクローズの原則 単一責任の原則とは、クラスまたはモジュールが 1 つの機能または責任を完了することのみを担当することを意味します。具体的には、クラスまたはモジュールの変更理由は 1 つだけ、つまり、責任または機能が 1 つだけである必要があります。

単一責任原則とオープンクローズド原則

単一責任の原則とは、クラスまたはモジュールが 1 つの機能または責任を完了することのみを担当することを意味します。
具体的には、クラスまたはモジュールの変更理由は 1 つだけ、つまり、責任または機能が 1 つだけである必要があります。クラスまたはモジュールに複数の責任または機能がある場合、結合と複雑さが生じやすく、保守と保守が困難になります。拡大。
たとえば、図書館管理システムでは、司書は本の貸し出しと返却の責任を負い、司書は本の貸し出しと返却の責任のみを処理する必要があり、図書館の収支の維持などの他の機能に関与すべきではありません。 。単一責任の原則はオブジェクト指向設計の基本原則であり、システムの保守性、テスト容易性、スケーラビリティを向上させ、肥大化して複雑なコードの問題を回避し、コードをより明確で理解しやすくすることができます。
オープン クローズド原則 (OCP) は、ソフトウェア エンティティ (クラス、モジュール、関数など) が拡張に対してオープンであり、変更に対してクローズされる必要があることを意味します。
具体的には、モジュールの動作はソース コードを変更せずに拡張でき、新しいコードを追加することで新しい動作を実装できる必要があります。つまり、何らかの新しい機能を追加する必要がある場合、既存のコードを変更するのではなく、新しいコードを追加することで元の機能を拡張する必要があります。この利点は、既存のコードが破壊または変更されないことが保証され、システムの安定性、信頼性が向上し、保守が容易になることです。
たとえば、ブログ システムは、テキスト、写真、ビデオなど、さまざまな種類の記事をサポートする必要があります。オープンとクローズの原則を採用する場合は、記事タイプの抽象基本クラスまたはインターフェイスを定義してから、タイプごとに特定のサブクラスまたは実装クラスを実装する必要があります。このようにして、新しい記事タイプを追加する必要がある場合、既存の記事タイプ コードを変更することなく、新しいサブクラスまたは実装クラスを実装するだけで済みます。
オープン性とクロージャ性の原則はオブジェクト指向設計における重要な原則であり、これによりシステムの柔軟性、拡張性、保守性が向上し、システムの変更と保守が容易になり、変更への適応も容易になります。ただし、オープン・クローズの原則を実現するには、適切なアーキテクチャ設計とシステムのモジュール分割が必要であり、他のオブジェクト指向設計原則やパターンを理解して適用する必要もあります。

三角形を描く機能を追加する必要があるという問題は、単一責任の原則と開閉の原則に従うことで実現できます。
まず、GraphicEditor クラスは単一責任の原則に従う必要があります。つまり、クラスは 1 つの機能または責任を完了することのみを担当します。したがって、長方形、円、三角形の描画関数を Rectangle、Circle、Triangle クラスなどの別のクラスにカプセル化し、それぞれに対応するグラフィックスの描画を担当させることができます。
次に、開放性と閉鎖性の原則に従うために、抽象 Shape クラスまたはインターフェイスを定義し、Rectangle、Circle、Triangle クラスすべてにこのインターフェイスを実装させることができます。このように、新しいシェイプを追加する必要がある場合、既存のコードを変更することなく、新しいクラスを実装するだけで済み、Shape インターフェイスを実装する必要があります。
最終的に、GraphicEditor クラスは、以下に示すように、各グラフィックス クラスの描画メソッドの呼び出しを担当するだけで済みます。
このうち、GraphicEditor クラスは、各グラフィックス クラスの描画メソッドの呼び出しを担当し、Rectangle、Circle、Triangle の描画メソッドを呼び出します。クラスは、対応するグラフィックスの描画を担当します。
同時に、これら 3 つの具象グラフィックス クラスはすべて、システムの拡張とメンテナンスを容易にするための抽象 Shape インターフェイスを実装しています。
単一責任原則とオープンクローズド原則に従うことで、システムの柔軟性、拡張性、保守が容易になり、システムの品質と信頼性が向上します。
同時に、依存関係逆転の原則、組み合わせパターン、ファクトリ パターンなどの他のオブジェクト指向設計原則やパターンから学び、システムの設計と実装レベルをさらに向上させることもできます。
public class GraphicEditor { public voiddrawRectangle(Rectangle r) { r.draw(); } public voiddrawCircle(Circle c) {





このようにして、既存のコードを変更せずに新しい
三角形描画 関数を追加でき、単一責任と公開性の原則にも準拠ます閉鎖の原則。



おすすめ

転載: blog.csdn.net/zezeaichirou/article/details/129485262