リスコフの置換原則の例は何ですか? 質問する

リスコフの置換原則の例は何ですか? 質問する

Liskov Substitution Principle (LSP) はオブジェクト指向設計の基本原則であると聞きました。それはどのようなもので、どのような使用例がありますか?

ベストアンサー1

LSP を説明する素晴らしい例 (最近聞いたポッドキャストで Uncle Bob が挙げたもの) は、自然言語では正しく聞こえるものが、コードではうまく機能しないことがあるというものでした。

数学では、 aSquareは ですRectangle。実際、これは長方形の特殊化です。「 である」という表現から、これを継承でモデル化したいと考えるでしょう。しかし、コード内で をSquareから派生させた場合RectangleSquareが期待される場所であればどこでも を使用できるはずですRectangle。これにより、奇妙な動作が発生します。

基底クラスにSetWidthとメソッドがあると想像してください。これは完全に論理的に思えます。しかし、参照が を指している場合と は意味をなしません。一方を設定すると、もう一方もそれに合わせて変更されるからです。この場合、で Liskov Substitution Test に失敗し、を継承するという抽象化は不適切です。SetHeightRectangleRectangleSquareSetWidthSetHeightSquareRectangleSquareRectangle

ここに画像の説明を入力してください

皆さんも他のプライスレスもチェックしてみてくださいモチベーションを高めるポスターで説明する SOLID 原則

おすすめ記事