問題タブ [null-object-pattern]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
4 に答える
1039 参照

ruby - Ruby の nil に似たオブジェクト

nilに似た論理式でfalseと評価されるオブジェクトをRubyで作成するにはどうすればよいですか?

私の意図は、チェーンの途中で値が通常 になる他のオブジェクトのネストされた呼び出しを有効にすることですnilが、すべての呼び出しを続行して、それ自体ではなく nil のようなオブジェクトを返すことnilです。オブジェクトは、処理方法がわからない受信メッセージに応答して自分自身を返しますnil?。.

例えば:

buzzプロパティが利用できない場合は、nil のようなオブジェクトを返します。このオブジェクトは、それ自体fizzを返すまで呼び出しを受け入れます。bar最終的に、上記のステートメントは false と評価されるはずです。

編集:

以下のすべての素晴らしい回答に基づいて、次のことを思いつきました。

これにより、次のような卑劣なトリックが可能になります。

明らかに、関数呼び出し/クラス/モジュール/どこでも、このブロックを透過的にラップできます。

0 投票する
3 に答える
726 参照

java - LinkedList の Null オブジェクトの設計パターン

nullオブジェクトのデザインパターンを使用して、リストの最初と最後にnullオブジェクトと二重にリンクされたものを実装しようとしています。したがって、空のリストには 2 つの null オブジェクトが含まれます。だから私はこのコードを書きましたこれはnullオブジェクトの設計パターンに従っていますか? そうでない場合、どうすればそれを達成できますか。任意の提案をいただければ幸いです。

更新されたコード-

0 投票する
2 に答える
2619 参照

c# - null をキャッシュに挿入できますか?

ASP.NET Web サイトでキャッシュを積極的に使用しています。

ただし、db から要求された一部のオブジェクトは実際には存在しません。たとえば、テーブル内のDiscountレコードを見て、特定の製品のがあるかどうかを確認しています。記録がないということは、割引がないということです。ProductId=@ProductIdProductsDiscount

null割引オブジェクトをキャッシュに入れるのは良い考えだと思いますか?

または、より良いものを発明した方がよいでしょう (たとえば、null オブジェクト パターンを使用します)。実際、null-object パターンの使用を開始するという考えはあまり好きではありません。少なくとも今は避けたい多くの再設計が必要になるからです。

ありがとう。どんな考えでも大歓迎です。

PS実際、呼び出しようとすると、nullオブジェクトをキャッシュに入れることさえできません。

私は受け取ります:

値を null にすることはできません。

PPS なぜ MSDN はこの動作について何も言わないのですか?

0 投票する
5 に答える
2671 参照

c# - C#の一般的なnullオブジェクトパターン

C#でジェネリックnullオブジェクトパターンを実装する方法があるかどうか疑問に思っています。ジェネリックnullオブジェクトは、NothingScalaと同様に、すべての参照型のサブクラスです。のようです

しかし、コンパイルできず、デフォルトの動作を提供したり、例外をスローしたりするためのメソッドを実装する方法がわかりTません。ここにいくつかの考えがあります:

  1. リフレクションを使用しますか?
  2. 作成時に式ツリーを使用しNothing<T>ますか?たぶんMoqのように見えます。そして別の質問が来ます:製品コードでモックフレームワーク/ライブラリを使用しても大丈夫ですか?
  3. 動的タイプを使用しますか?

私は多分私が特定のタイプのために特定のnullオブジェクトを実装する必要があることを知っています。解決策があるかどうか知りたいだけです。

なにか提案を?ありがとう。

0 投票する
3 に答える
372 参照

c++ - nullオブジェクトモデルを使用したC ++二重リンクリスト

null オブジェクト モデルを使用して双方向リンク リストを作成しようとしています。ここまでで、リストの先頭にノードを追加するメソッドとノードを表示するメソッドを実装しました。私の問題は、表示機能が常に 0 を表示することです。どこが間違っていて、どのように修正すればよいか誰か指摘できますか? また、ここで null オブジェクト モデルを正しく実装するための正しい軌道に乗っていますか?

注:これは学校の課題です。説明なしで解決策を投稿しないでください。ここで何が起こっているのかを学び、理解したいと思います。

編集:表示の問題を修正した後、私は別のものを持っています:空のリストまたはノードを持つリストで getHead() または getTail() を呼び出すと、 nullNode クラス(空のリストの場合) または elementNode クラス (ノードを持つリストの場合)。これを修正する方法に行き詰まっています。

container.getNext() と container (空のリストの場合) のアドレスを出力すると、両方のアドレスが同じなので、末尾に ->self() を追加して nullNode クラスから self() メソッドを呼び出すべきではありませんか?

0 投票する
2 に答える
3414 参照

asp.net-mvc-3 - Public ActionResult Delete(int id, brand brand) - Null ブランド オブジェクト (MVC3 & Entity Framework)

Entity Framework で MVC 3 を学習していますが、コントローラーの削除アクションの結果メソッドに問題があります。削除用の 2 つの ActionResult メソッドがあります。1 つは [HttpPost] を使用してデータをデータベースに送信し、もう 1 つは ID に基づいて正しいレコードをビューに入力します。

私の問題は、パラメーターに null オブジェクトがあるため、削除トランザクションをコミットしようとすると、null 値を持つ null オブジェクトがあるため、正しい値が表示されないことです。

これは、null オブジェクトを含むコードです。

ブランドが無効で、その理由がわかりません。例えば

Edit actionresult の Brand Parameter には、オブジェクトにデータがあり、null 値ではありません。

これを修正する方法を知っている人はいますか?ありがとう。

0 投票する
2 に答える
396 参照

reflection - Groovy NullObject は null にする必要がありますか?

この例は、groovy コンソールで簡単にテストできます。

var a は非 null と評価され、b は null と評価されます。

どちらも org.codehaus.groovy.runtim.NullObject のインスタンスです

誰も理由を知っていますか?

リフレクション コードを扱う場合、これは注意が必要です。

0 投票する
2 に答える
208 参照

design-patterns - Null オブジェクトの設計パターンの動作に関する問題

私は自分の考えをいくつか共有し、いくつかの質問をしたいと思います ニュートラルな動作でクラスを実装することになっている Null オブジェクトの設計パターン。したがって、インターフェイスを実装する必要がある場合:

おそらく、次の実装を使用します。

罰金。

しかし、次のインターフェイスを実装する必要がある場合、どの戦略を使用する必要がありますか:

IsTasty - 「ニュートラル」な動作はありません。NullProduct クラスにどのように実装すればよいですか? true または false を返します。いいえ、それほど明確ではありません。

さらに悪いことに、インターフェースにいくつかのプロパティがある場合:

と実装:

なんで?そのため、次のように、一部のユーザーがオブジェクトを取得する場合:

そしてユーザーは次のことを試みます:

ユーザーは奇妙な結果を得るでしょう。ユーザーは覚えています。彼は 8 ドルの価格を設定しましたが、現在は価格が 0 になっています。インフレですか。

UnitTest で同じ問題。

今、オブジェクトがnullオブジェクトかどうかを尋ねることでOCPに違反したくありません。

問題をどのように解決しますか?

0 投票する
1 に答える
108 参照

ruby-on-rails - nil:NilClass リファクタリングの未定義のメソッド?

トランザクションでは、顧客がservice_idカートに追加サービスを追加しなかったために持っていないことがあります。問題は、transactionsインデックスページがundefined method 'name' for nil:NilClassオンラインで返されることです

より良い方法はありますか

このNULL OBJECT PATTERNの記事を見つけました。それが私のシナリオにどのように適用されるかよくわかりませんでした。