いきなりGOF外のデザインパターン けど、よく使いそうな感じだったのでメモ プログラムデザインのためのパターン言語 が初出 どんなパータン? よくあるこんな書き方 あるオブジェクトが nil でなければ、メソッドを呼び出す こういうパターンが頻出する場合、obj に nil の代わりに何もしないメソッドを持つオブジェクト を格納しておく インターフェースだけ持って、何もしないオブジェクトを用意することで、 そのオブジェクトを使う側は、オブジェクトが生成されなかった場合を気にする必要がなくなる → オブジェクトの状態を意識する必要が無い → 結合度が下がる 実装例 Factoryパターンとの組み合わせで、インスタンスの生成が行えない場合、NullObject を返す module Animal class Cat def sound puts 'meow' end end class Dog
![NullObjectパターン - Qiita](https://cdn-ak-scissors.b.st-hatena.com/image/square/703f8470456b6c664b0285bde029aad205e0b6dc/height=288;version=1;width=512/https%3A%2F%2Fqiita-user-contents.imgix.net%2Fhttps%253A%252F%252Fcdn.qiita.com%252Fassets%252Fpublic%252Farticle-ogp-background-9f5428127621718a910c8b63951390ad.png%3Fixlib%3Drb-4.0.0%26w%3D1200%26mark64%3DaHR0cHM6Ly9xaWl0YS11c2VyLWNvbnRlbnRzLmltZ2l4Lm5ldC9-dGV4dD9peGxpYj1yYi00LjAuMCZ3PTkxNiZoPTMzNiZ0eHQ9TnVsbE9iamVjdCVFMyU4MyU5MSVFMyU4MiVCRiVFMyU4MyVCQyVFMyU4MyVCMyZ0eHQtY29sb3I9JTIzMjEyMTIxJnR4dC1mb250PUhpcmFnaW5vJTIwU2FucyUyMFc2JnR4dC1zaXplPTU2JnR4dC1jbGlwPWVsbGlwc2lzJnR4dC1hbGlnbj1sZWZ0JTJDdG9wJnM9ZjZmNDAwMDhlODhlOTE5MDVhNGY1ZDFiYWM5NmNjNTk%26mark-x%3D142%26mark-y%3D112%26blend64%3DaHR0cHM6Ly9xaWl0YS11c2VyLWNvbnRlbnRzLmltZ2l4Lm5ldC9-dGV4dD9peGxpYj1yYi00LjAuMCZ3PTYxNiZ0eHQ9JTQwa2FzZWktc2FuJnR4dC1jb2xvcj0lMjMyMTIxMjEmdHh0LWZvbnQ9SGlyYWdpbm8lMjBTYW5zJTIwVzYmdHh0LXNpemU9MzYmdHh0LWFsaWduPWxlZnQlMkN0b3Amcz00YTQ2MjhjNjA3M2IxOTQ1ZTQyMjk0Yjc5OTczMDQ1OQ%26blend-x%3D142%26blend-y%3D491%26blend-mode%3Dnormal%26s%3D59d1225ffe915b8f57eacb7a987b7996)