- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
NullObjectPattern旨在成为“安全”(中立)行为。
这个想法是创建一个不做任何事情的对象(但也不抛出 NullPointerException )
例如定义为的类:
class Employee {
private String name;
private int age;
public String getName(){ return name; }
public int getAge() { return age; }
}
class Other {
Employee oscar;
String theName = oscar.getName(); // NPE
}
class NullEmployee extends Employee {
public static final Employee instance = new NullEmployee();
public String getName(){ return ""; }
public int getAge() { return 0; }
}
Employee oscar = NullEmployee.instance;
最佳答案
对我来说,空对象模式感觉就像安慰剂。真实对象和空对象可能具有完全不同的含义,但行为非常相似。就像安慰剂一样,空对象会诱使您相信没有任何问题,但某些事情可能非常错误。
我认为这是一个很好的做法 及早失败,经常失败 .最后,您需要在某处区分真实对象和空对象,此时它与检查 null
没有什么不同。指针。
来自 Wikipedia article :
The advantage of this approach over a working default implementation is that a Null Object is very predictable and has no side effects: it does nothing.
null
指针会在开始时抛出异常,将您的注意力直接吸引到问题的根源。
null
.这是一个很好的实践,但它是空对象模式的一个糟糕示例,因为它处理的是一组对象,而不是单个实例。
关于language-agnostic - 为每个类创建一个 NullObject 是否可行? (当然有工具),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3266179/
对于我的一个项目,我终于需要使用我的第一个多态类(std::cout 除外)。 我正在研究如何确保至少在某些情况下我有 100% 的去虚拟化调用。 这段代码是否合法可行? dynamic_cast 有
最近有一个编译问题,用这个片段说明: struct Base { }; template struct A : Base { A(){} A(Base&&) {} }; A foo()
注意:这是一个冗长的问题,需要对 MVVM“设计模式”、JSON 和 jQuery 有很好的理解.... 所以我有一个理论/主张 DHTML 中的 MVVM 是可能的 和可行的 并且想知道您是否同意/
我有一台 Mac 服务器,我正在构建 PHP 代码以允许用户上传图像、文档甚至视频文件。研究这个肯定让我很紧张,我希望上传的内容没有病毒。 自己构建一些东西会是一个巨大的挑战吗?您会这样做,还是会
根据文档,ASP.NET 项目(尚)不支持新的 PackageReference https://learn.microsoft.com/en-us/nuget/consume-packages/pa
我是一名优秀的程序员,十分优秀!