问题标签 [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.
java - 如何在非通用上下文中使用 Guava Optionals?
我正在尝试通过以下方法使用来自番石榴的 Null-Objects:
我调用方法 display(..) 的方法如下所示:
现在我收到以下编译器错误:
我发现的唯一编译解决方法是使用
代替
如果我在非泛型上下文中使用 Optionals,真的没有其他可能性吗?
ruby-on-rails - 如何模拟模型上的特定属性以进行 Rails 视图测试?
我正在为 rails 视图编写测试,可以说视图类似于:
显示.json.rep
现在我想测试它生成的 json 并且只是对该id
领域感兴趣。
如果我的测试代码写成这样:
会报这样的错误:
我不想嘲笑somefieldX
我不感兴趣的所有领域,所以我尝试了as_null_object
:
这一次,它没有报那个错误,但奇怪的是,rendered
值是null
!!
我不确定为什么以及如何解决它?或者有没有其他方法让我只提供我感兴趣的领域?
c# - 依赖注入和 C# 中的保护子句和空对象模式
使用构造函数注入,一个依赖被注入到这样的消费者中(至少我希望我理解正确):
如果我要为 IDependency 使用 Null 对象模式,我需要保护子句吗?还是注入 Null 对象是错误的?
更新:为了澄清,假设我有这样的类和接口:
然后我可以安全地从 SomeConsumer 中删除保护子句,使其看起来像:
或者我应该使用保护子句,因为我不能确定它null
永远不会被注入?
java - 空对象模式
似乎有越来越多的人说您永远不应该返回 null,而应该始终使用 Null 对象模式。在使用集合/映射/数组或调用诸如 isAuthenticated() 之类的布尔函数时,我可以看到 NOP 的用处,此处显示。
我在这方面还没有找到任何令人信服的东西。在我尝试整理我的想法时,请耐心等待。
我的理解是,您不是返回一个空对象,而是返回一个已“归零”的有效对象。
例如,客户端会调用来获取一个对象:
如果不使用 NOP,则需要在调用任何方法之前检查从 getCar() 返回的对象是否为 null:
使用 NOP,而不是getCar()
返回 null,它现在返回一个有效地“清零”的对象。所以现在我们不再需要做if (car != null)
,只需请求颜色即可。所以,我想当我们调用颜色时,我们的“归零”对象会返回“无”。
这有什么帮助?似乎向前移动并在空对象上调用方法会导致与检查 null 一样多的痛苦。现在,当需要显示信息时,我们需要检查颜色是否为“无”,高度是否为 0,或者您拥有的任何其他值。所以本质上,不是在处理开始时检查汽车是否为空,而是在之后检查我们拥有的汽车对象是真车还是替代品。IE我们不想显示一堆空对象,所以我们需要一些方法来过滤掉我们所有的空对象。
此过滤是一个附加步骤,就像调用 if (car != null) 一样。唯一的区别是,通过检查 null,我们可以通过抛出异常来在发现 car 对象为 null 时立即停止处理,而使用 NOP,我们会调用空对象上的方法并继续运行,直到时间到了显示对象,此时我们过滤掉空对象。此外,您需要知道空对象返回的值。IE 确实 getColor() 返回“无”或“空”。
显然必须有一些我忽略的东西。提前致谢。
c# - 具有实体框架代码的空对象模式
我们已经在我们的领域模型中实现了空对象模式。我们首先使用代码和 fluent api 来持久化我们的域模型。
我们的一个实体有一个导航属性——这个导航属性是一个 FK,是我们使用空对象模式的地方。
我们的 null 对象0
的 id 具有默认值。有没有办法使用流利的 api(或直接映射)告诉 EF '如果这是那些 null 对象之一,真的在数据库 fk 字段中抛出 null,而不是那个无效0
的 id'。
编辑:
例如,假设您有一个 Student 实体和一个 FavoriteSubject 实体。一个学生有一个对收藏主题的引用,除非他没有收藏主题,否则空对象将类似于 NoFavorite。
当我们将它持久化到数据库时,我们得到 NoFavorite (0) 的 Id,我们非常希望数据库中的 NULL 因为 NoFavorite 是一个空对象(遵循空对象模式)。
ruby-on-rails - Rails中空对象的命名约定?
对于 Rails 应用程序:是否存在命名映射到模型对象的空对象的命名约定?
例子:
是NullBlog
常规的吗?
Avdi Grimm 的这篇文章和 Sandi Metz 的Nothing is Something演讲都没有提到任何空对象命名约定。
android - 如何使用 RxJava 实现 NullObject 模式
是的,这听起来可能有点雄心勃勃,但这是我想要实现的目标:
我有一个持有我热的班级,Observable
班级需要一些时间来正确准备它(在另一个地方创建它并获得参考),所以当另一个班级要求它时,引用可能仍然为空(导致空指针)。我想要实现的目标类似于 NullObject 模式:返回可以安全订阅的空 observable(而不是 null),并且在正确创建 Observable 时开始发射项目。
解决它的一种方法是创建PublishSubject
充当客户端类和 ObservableHolder 类之间的桥梁。PublishSubject 引用总是返回给客户端,当Observable
它准备好时,它会将所有事件转发给主题。这是一个好的解决方案吗?还是可以做得更好?
@编辑
我决定继续使用我的解决方案,我认为在将其包装在课堂上之后,它已经足够好了。我赞成以下答案,但它与我的问题不匹配,因为它与rx-java
实现没有直接关系,但建议代理模式很有帮助。
ruby-on-rails - Rails 实例方法有条件取决于设置的属性
我有一个模型,它有几个在保存模型时是可选的属性。
我有几个使用这些属性并执行计算的实例方法,但我想先检查它们是否不为零,因为我会得到可怕的no method error nil nil class
除了乱扔我的代码之外,.present?
还有更好的方法吗?
编辑: 这是我的代码到目前为止
我觉得.present?
插入执行检查有一种不好的代码气味,我已经研究了空对象模式,但在这里似乎没有意义,因为对象存在,但一些属性是nil
c++ - “无法从 'A' 转换为 'B&'
我正在使用模板元编程构建一个实体组件系统。我不断收到Cannot convert from [base type] to [type user requested]&
或Cannot convert NullComponent to [type user requested]&
错误:
编辑
这些选项目前似乎有效。
或者
java - 实现空对象模式的方法
到目前为止,我到处都看到创建空对象模式的步骤,例如在 BST 中删除空检查,如下所示:
创建接口节点
创建两个实现接口节点的类。其中一个是 real_Node,另一个是 null_Node。
使用这些类,可以在创建树时在 BST 类中删除空检查。
现在我想知道,有没有其他方法可以做到这一点,例如,我们可以实现空对象模式而不使用只使用类的接口,即在上面的步骤(1.)中我们可以使用 Node 类而不是 Node 接口吗