デザインパターン出品者のデータにフィルタをかけて該当する出品者のSellerオブジェクトを返すメソッドがあるとします。評価率80%以上で最安値の出品者を抽出するprint_r($filter->featuredSeller());featuredSellerメソッドは評価率が80%以上で最安値の出品者を返しますが、出品者のデータの中に評価率80%以上の出品者がいない場合、nullが返りエラーになります。?Sellerに書き換えてnullも許容できるようにしてあげないといけません。}しかし、?Sellerとしてしまうと利用する側でnullが返ってきているのか、Sellerオブジェクトが返ってきているのかいちいち確認しないといけません。nullチェックを忘れてSellerクラスのメソッドを使用するとエラーになります。}条件に当てはまる出品者がいない場合、nullを返すのではなくNullSellerオブジェクトを返すようにし、またSellerInterfaceをfeaturedSellerメソッドの返り値とすることで、呼び出した側でnullが返ってくるのか確認する必要がなくなります。$filter->featuredSeller()->price();NullObjectパターンを導入することで、returnの型を明確にできる返り値の型を?Sellerとする必要がなく、nullもしくはSellerが返るという曖昧な書き方をしなくて済む。返ってきた値に対してif文でnullかどうかいちいち確認しなくても良いというメリットが得られます。昨日初めて使ったのでそもそも本来のNullObjectパターンとずれてるかもしれないし、後々にやっぱこれアンチパターンだわって気づくかもしれない。(1)booklogはてなブログをはじめよう!kyamashiroさんは、はてなブログを使っています。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。