GoFには、ビルダーの実装に関する問題の一部があります。それらのうちの1人は言う:GoFビルダーとLiskovの置換原則
空のメソッドは、ビルダーではデフォルトです。 C++では、ビルドメソッドは で、意図的に純粋仮想メンバ関数として宣言されていません。彼らは は、クライアントは、彼らが興味を持っているだけ 操作を上書きせ、代わりに空のメソッドとして定義されている。
はない空のメソッドは、LSPに違反していますか? Ostrich
をBird
から継承すると同様に見えますが、それはfly
になります。
したがって、 'Bird'は' fly'と呼ばれる空のメソッドを持つことができ、 'Straus'は鳥である可能性がありますか? – Narek
でも、フライは何もしないので、それは本当に飛んでいない鳥です。おそらくダチョウ? –
@ Narekあなたは意図を明確にしなければなりません。あなたも 'canFly'メソッドを持っていれば、すべてがうまくいっていると言えます。また、インタフェースを分離し、別々の 'FlyingBird'インタフェースを持たせることもできます。そうすれば、すべての鳥を均一に扱うことはできません。 – plalx