どうもこんにちは,ピーコックアンダーソンです。
今回はオブジェクト指向の5大原則の中から
「リスコフの置換原則」をテーマに解説しています。
「リスコフの置換原則」は継承のガイドラインになる原則ですが,
この原則に加えて,
継承をするべきではないケースの場合に,どのように解決するべきか
ということを,「継承以外の解決方法」と題して,
追加で解説しています。
なので,1原則にもかかわらず,結構なボリュームになったので
「リスコフの置換原則と継承以外の解決方法」ということで
リリースさせていただきます。
リスコフの置換原則はオープンクローズドの原則のガイドラインにもなり,
正しい抽象の使い方ができているかのガイドラインになります。
そして,原則に反してしまう場合に,どのように解決していくべきかということを,
C#の実例をつけて解説しているので,興味のある方は,ご覧になってみてください。
#01_リスコフの置換原則の概要
#02_原則に従っている例
#03_原則に従っている例_抽象クラス
#04_原則に従っている例_インタフェース
#05_原則に従っている例_具象クラス
#06_抽象クラスでの一部上書きの例
#07_原則違反の例
#08_置換可能でない場合の問題点
#09_原則違反の例実装
#10_継承とは
#11_抽象に対してコーディングする
#12_抽象に対してコーディングする実装例
#13_クライアントは抽象に対してコーディングするイメージ
#14_知識が漏れ出すということ
#15_データベースへの実装を遅らせる実装例
#16_知識が漏れ出すということの実装例
#17_知識が漏れないように修正
#18_抽象クラスにロジックを集めて知識が漏れるのを防ぐ
#19_知識を制限するという考え方
#20_アクセスレベルで知識の漏れを防ぐ実装方法
#21_抽象に対して実装を強制する実装方法
#22_原則に従っていることのチェックポイント
#23_似てるから継承するという誤り
#24_似てるから継承するという誤りの実装例
#25_似てるから継承の問題点まとめ
#26_継承させない実装
#27_継承させない実装方法の例
#28_継承以外の解決方法
#29_継承以外のアイデア1_別で作る
#30_別で作った場合の問題点_重複コードが出る
#31_アイデア1_別で作る実装例
#32_継承以外のアイデア2_持つという考え方
#33_継承以外のアイデア2_持つという考え方の実装
#34_持つということの問題点
#35_持つという考え方のガイドライン
#36_発注状況管理クラスで発注データを持つ実装例
#37_Entityを持つという考え方
#38_アイデア3_共通化という解決
#39_共通化の実装例
#40_共通化という解決の問題点
#41_共通化で解決できるガイドライン
#42_アイデア4_最小カプセル化という解決
#43_最小カプセル化の実装例
#44_似てるから共通化するという誤り
#45_発注リストと発注履歴リストのモデルを共用で使うBADな例
#46_実態に合わせたモデリング_1テーブルの場合
#47_実態に合わせたモデリング_2テーブルの場合
#48_共通要素をまとめる継承
#49_共通要素をまとめる継承の実装例
#50_リスコフの置換原則まとめ
#51_プログラマーの自問