如何在装饰模式中处理’this’引用
发布时间:2020-12-14 19:12:32 所属栏目:Java 来源:网络整理
导读:我在使用装饰器模式的我的类中遇到了问题. 当内部对象在调用其他对象时使用“this”引用时,会出现问题.这会导致来自接收“this”引用的对象的所有调用直接发送到内部对象,而不会通过外部第一个. 解决这个问题的常用方法是什么? 谢谢. 最佳答案 对象具有隐含
我在使用装饰器模式的我的类中遇到了问题. 当内部对象在调用其他对象时使用“this”引用时,会出现问题.这会导致来自接收“this”引用的对象的所有调用直接发送到内部对象,而不会通过外部第一个. 解决这个问题的常用方法是什么? 谢谢. 最佳答案
对象具有隐含值:它们的标识(可以通过应用==来测试).当你包装它们时,你有效地隐藏了这个身份(更糟糕的是,你还暴露了一个潜在的误导性身份,包装器本身的身份).因此,一种显而易见的方法是通过另一种方式 – 明确地 – 暴露对象的身份来弥补这一点.例如.你可能会引入一个方法Object getIdentity(),它返回一个真正代表预期身份的对象,并允许对它应用==.
但是,最大的缺点是你仍然允许装饰者本身使用==,例如危害: >很自然地被骗到它(identity == decorator而不是identity == decorator.getIdentity()) 例如,如果对象具有如下方法,则问题将不存在:
在哪个==运算符将被定义,所以包装器也可以包装包装对象的标识,而不是用它自己替换它. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- Object转json字符串,Object转Map,Map转Object 简单源码
- jpa – 双向@ManyToMany中的MappedBy:原因是什么
- 找不到Java 9 Zip End Header异常
- Hibernate Criteria接口 addOrder方法:设置结果集的排序规
- Android 判断ListView滑动方向
- java – 将默认实现添加到代表监听器的接口的方法可以吗?
- java – DBUnit不清理并在每个方法之后插入数据库,因此测试
- 图片批量下载一个Android工具类
- FreeMarker之根据模型生成HTML代码
- OpenCV 2.2和多CPU – opencv_haartraining.exe多线程?