「[[.NET 開発基盤部会 Wiki>http://dotnetdevelopmentinfrastructure.osscons.jp]]」は、「[[Open棟梁Project>https://github.com/OpenTouryoProject/]]」,「[[OSSコンソーシアム .NET開発基盤部会>https://www.osscons.jp/dotNetDevelopmentInfrastructure/]]」によって運営されています。

-[[戻る>なんとか原則]]

*目次 [#f4d2190d]
#contents

*概要 [#md342284]
-オブジェクト指向プログラミングの分野において、
--ソフトウェア設計の5つの原則を記憶するための頭字語。
--Robert C. Martinにより提唱された原則の一部を集めたもの。

--以下の目的で考案された。
ソフトウェアを、
---より理解し易くする。
---より柔軟にする。
---よりメンテナナンス性を高くする。

-ソフトウェア設計の原則であるGRASPとは無関係。

*詳細 [#xb8a9c76]

**単一責任の原則(Single responsibility principle) [#r410d449]
-1つのクラスは1つだけの責任を持たなければならない。
-すなわち、ソフトウェアの仕様の一部分を変更したときには、~
それにより影響を受ける仕様は、そのクラスの仕様でなければならない。

**開放閉鎖の原則(Open–closed principle [#pd932210]
-「ソフトウェアのエンティティは~
拡張に対して開かれていなければならないが、~
変更に対しては閉じていなければならない。」

-変更に強く、拡張を容易にするために、できるだけ、~
>「[[部分型付け(Subtyping)>GRASP(General Responsibility Assignment Software Pattern)#f1299cd2]]で実装しろ。」

>みたいな話。

**リスコフの置換原則(Liskov substitution principle) [#y35d73b4]
-「プログラムの中にある任意のオブジェクトは、~
プログラムの正しさを変化させることなく、~
そのサブクラスのオブジェクトと置換できなければならない。」

-[[部分型付け(Subtyping)>GRASP(General Responsibility Assignment Software Pattern)#f1299cd2]]を実装できるように、~
>「基本クラスのインターフェイスに対応する実装をしとけ。」

>みたいな話。

**インターフェイス分離の原則(Interface segregation principle) [#b51aa5f2]
-「汎用的な目的のインターフェイスが1つだけあるよりも、~
特定のクライアント向けのインターフェイスが多数あった方がよりよい。」

-オプショナルな機能を基本クラスのインターフェイスに実装るとアレ。~
従って、
--インターフェースをグループ毎に分け
--必要に応じてにインターフェース継承する。

**[[依存性逆転>#r6df87fb]]の原則(Dependency inversion principle) [#i87ee4ef]
「具体ではなく、抽象に依存しなければならない」

*参考 [#bfd24d35]
-SOLID - Wikipedia~
https://ja.wikipedia.org/wiki/SOLID

-開発者が知っておくべきSOLIDの原則 | POSTD~
https://postd.cc/solid-principles-every-developer-should-know/

**[[GRASP(General Responsibility Assignment Software Pattern)]] [#w6faa570]

**よくわかるSOLID原則|erukiti|note [#m6c876b4]
***1: S(単一責任の原則) [#iab9fc9b]
https://note.com/erukiti/n/n67b323d1f7c5
***2: O(オープン・クローズドの原則) [#nb398b80]
https://note.com/erukiti/n/n959277a74dd0
***3: L(リスコフの置換原則) [#ube1530c]
https://note.com/erukiti/n/n88b8ed99f1e1
***4: I(インターフェース分離の原則) [#ua0d8da9]
https://note.com/erukiti/n/n3daa55541bc8
***5: D(依存性逆転の原則) [#v5411038]
https://note.com/erukiti/n/n913e571e8207

**Qiita [#d53d688a]

***SOLID原則まとめ [#lccf08b9]
https://qiita.com/kahirokunn/items/84b70631507928786bbb

***SOLID原則について簡単に書く [#yfc6192d]
https://qiita.com/yui_mop/items/93fef037a787318e7067

**マイクロソフト系技術情報 Wiki [#fd38099b]

***[[デザイン・パターン>https://techinfoofmicrosofttech.osscons.jp/index.php?%E3%83%87%E3%82%B6%E3%82%A4%E3%83%B3%E3%83%BB%E3%83%91%E3%82%BF%E3%83%BC%E3%83%B3]] [#g6ea561c]

***[[IoC>https://techinfoofmicrosofttech.osscons.jp/index.php?IoC]] [#t192e7b5]
***[[DI>https://techinfoofmicrosofttech.osscons.jp/index.php?DI]] [#cf63e2b6]
***[[IoC、AOP → DI → 依存性反転原則>https://techinfoofmicrosofttech.osscons.jp/index.php?IoC%E3%80%81AOP%20%E2%86%92%20DI%20%E2%86%92%20%E4%BE%9D%E5%AD%98%E6%80%A7%E5%8F%8D%E8%BB%A2%E5%8E%9F%E5%89%87]] [#r6df87fb]

トップ   編集 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS