大家好,今天来为大家解答nullobject是什么意思?用法、例句这个问题的一些问题点,包括空对象模式(Null Object Pattern)也一样很多人还不知道,因此呢,今天就来为大家分析分析,现在让我们一起来看看吧!如果解决了您的问题,还望您关注下本站哦,谢谢~
1、本文节选自《设计模式就该这样学》
2、空对象模式(NullObjectPattern)不属于GoF设计模式,但是它作为一种经常出现的模式足以被视为设计模式了。其具体定义为设计一个空对象取代NULL对象实例的检查。NULL对象不是检查控制,而是反映一个不做任何动作的关系。这样的NULL对象也可以在数据不可用的时候提供默认的行为,属于行为型设计模式。
3、原文:Provideanobjectasasurrogateforthelackofanobjectofagiventype.TheNullobjectprovidesintelligentdonothingbehavior,hidingthedetailsfromitscollaborators.
4、空对象模式适用于以下应用场景。
5、(1)对象实例需要一个协作实例。空对象模式不会引入协作实例,它只是使用现有的协作实例。
6、(2)部分协作实例不需要做任何处理。
7、(3)从客户端中将对象实例不存在的代码逻辑抽象出来。
8、空对象模式的UML类图如下图所示。
9、由上图可以看到,空对象模式主要包含3个角色。
10、(1)抽象对象(AbstractObject):定义所有子类公有的行为和属性。
11、(2)真实对象(RealObject):继承AbstractObject类,并实现所有行为。
12、(3)空对象(NullObject):继承AbstractObject类,对父类方法和属性不做实现和赋值。
13、\npublicclassClient{\n\npublicstaticvoidmain(String[]args){\nObjectFactoryfactory=newObjectFactory();\nSystem.out.println(factory.getObject("Joe").isNill());\nSystem.out.println(factory.getObject("Tom").isNill());\n}\n\n\n//抽象对象\nstaticabstractclassAbstractObject{\nabstractvoidrequest();\nabstractbooleanisNill();\n}\n\n//空对象\nstaticclassNullObjectextendsAbstractObject{\n\npublicvoidrequest(){\nSystem.out.println("NotAvailableRequest");\n}\n\nbooleanisNill(){\nreturntrue;\n}\n}\n\n//真实对象\nstaticclassRealObjectextendsAbstractObject{\nprivateStringname;\npublicRealObject(Stringname){\nthis.name=name;\n}\n\npublicvoidrequest(){\nSystem.out.println("Dosamething...");\n}\n\nbooleanisNill(){\nreturnfalse;\n}\n}\n\n//对象工厂\nstaticclassObjectFactory{\nprivatestaticfinalString[]names={"Tom","Mic","James"};\n\npublicAbstractObjectgetObject(Stringname){\nfor(Stringn:names){\nif(n.equalsIgnoreCase(name)){\nreturnnewRealObject(name);\n}\n}\nreturnnewNullObject();\n}\n}\n}\n5空对象模式的优点
(1)它可以加强系统的稳固性,能有效地减少空指针报错对整个系统的影响,使系统更加稳定。
14、(2)它能够实现对空对象情况的定制化的控制,掌握处理空对象的主动权。
15、(3)它并不依靠Client来保证整个系统的稳定运行。
16、(4)它通过定义isNull()对使用条件语句==null的替换,显得更加优雅,更加易懂。
17、每一个要返回的真实的实体都要建立一个对应的空对象模型,那样会增加类的数量。
18、关注微信公众号『Tom弹架构』回复“设计模式”可获取完整源码。
19、【推荐】Tom弹架构:30个设计模式真实案例(附源码),挑战年薪60W不是梦
20、本文为“Tom弹架构”原创,转载请注明出处。技术在于分享,我分享我快乐!
21、如果本文对您有帮助,欢迎关注和点赞;如果您有任何建议也可留言评论或私信,您的支持是我坚持创作的动力。私信回复"666"或关注微信公众号『Tom弹架构』可获取更多技术干货!
关于nullobject是什么意思?用法、例句和空对象模式(Null Object Pattern)的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。