事はある:パターンは、約のバランスをとります。はい、それは一般的にはnullを返さないのが良い習慣ですが、他に返す必要があります。しかし、うまくいけば:返されるものはまだ意味をなさないはずです!
そして、「NullBook」がアプリケーションの設計にどう役立つかは、ある程度は分かりません。特に、さまざまな内部フィールドにアクセスできるようになります。正確な質問をしてください:公開された年、著者、またはそのような "NullBook"の何をすべきですか? たとえば、コードの一部が異なる「ソース」の書籍の「検索」を行った場合はどうなりますか?出版された年にそれらの本を並べ替えることを試みる。 NullBookがそのようなデータの一部であることは確かではありません。
このように私は、このクラスを持っていることの価値が逆には見えません。私はそれが "面白い"バグの可能性を作り出しているのを見ています。したがって、私の答えは:あなたが本当にそのクラスが必要な場合は、一歩戻って再検討してください。
null置換オブジェクトに代わるものがあります。おそらくあなたの言語では許容されていますオプション;または、nullを返す可能性のあるメソッドを再作成して、書籍のコレクション/配列を返すことができます。疑いの余地があります:そのリスト/配列は単に空です。
短いストーリー:他のクラスにプライベートフィールドへの直接アクセスを許可するのは、はるかに多くのインポートですデザインの臭い;あなたはNullObjectsに集中するべきではありません。その一方で、Information Hidingといった本質的なことをあきらめてください。
まず、プロパティに直接アクセスせずに(プライベートとして定義する)、setterを使用する必要があります。クラスでどのような値を割り当てるかを制御することができます。 – olibiaz
しかし、それはいつも可能ではありません。 – mahdix
また、コードがクラスメソッドの中にあると仮定できます。だから、私的なフィールドにもアクセスできるようになります。 – mahdix