“扩展设计”原则与访问者(获取者)/更改者(发起者)意识形态之间的冲突

罗曼·尼基琴科(Roman Nikitchenko)

背景:

诸如CheckStyle之类的代码分析器包含特殊的“扩展设计”规则它实施了真正特殊的类设计方法。就我而言,这确实是有争议的事情。很好地说明了这种设计方法。关键是您可以保护超类不被修改,只留下很小的“漏洞”。或者您将自己的课程定为期末考试。对于安全库设计的某些情况绝对有利。

另一方面,我们具有Java'bean'POJO样式,您可以在其中隐藏所有数据成员,并仅提供公共(或受保护)访问器(获取器)和更改器(设置器)。根据我的观点,拥有现实生活中的豆子使得它们几乎不可能被扩展。据我了解,唯一的方法是聚合bean并重新实现所有需要的访问器/更改器。但这严重降低了性能。

我看到SONAR在2011年从默认配置文件中删除了“扩展设计”规则。请注意,今年有一个人返回以重新检查它;-)。

问题:

因此,我计划从Sonar质量配置文件中删除“扩展设计”规则,主要是因为它使POJO的重用变得更加困难,但是我怀疑是否错过了一些方法,该方法允许在访问者/变异者保持良好安全性的情况下继承类。反对后代。有什么标准的方法可以改变我的想法吗?可以采用“扩展设计”方法来解决此冲突吗?

抱歉,在Java领域没有10年,所以我真的很想念很多东西。;-)

罗马

我会务实的,问一下您的代码的使用者是谁。如果这是供广大(公众?)受众使用的某种框架,那么您不妨仔细考虑您的扩展点。一方面,表达您的意图,另一方面,保护不应更改的部分。但是,如果这是供较小的受众内部使用的,则您都可以同意放松一些。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

MessageBird发起者处理

来自分类Dev

Alfresco Activiti任务分配回发起者

来自分类Dev

Alfresco Activiti任务分配回发起者

来自分类Dev

刷新访问者的缓存

来自分类Dev

OCaml访问者模式

来自分类Dev

访问者设计模式中的方法命名

来自分类Dev

Quickfix 中的发起者和接受者注销顺序

来自分类Dev

为特定网站的访问者禁用Chrome扩展程序?

来自分类Dev

我可以从默认继承中更改访问者吗?

来自分类Dev

在登录时更改访问者的权限组

来自分类Dev

我可以从默认继承中更改访问者吗?

来自分类Dev

根据访问者所在的国家/地区更改目标链接

来自分类Dev

如何通过JavaScript从Piwik获取访问者ID?

来自分类Dev

PHP通过纬度经度获取访问者位置

来自分类Dev

每天的Flot Graph访问者

来自分类Dev

python中的访问者模式

来自分类Dev

PHP中的访问者模式

来自分类Dev

Rails当前访问者数

来自分类Dev

Antlr4 Javascript访问者

来自分类Dev

如何发布网站却阻止访问者?

来自分类Dev

A / B测试平均划分访问者

来自分类Dev

使用Moq模拟访问者对象

来自分类Dev

专为访问者模式进行循环?

来自分类Dev

隐藏网站访问者的真实 URL

来自分类Dev

网站访问者详细信息

来自分类Dev

来自基类的访问者模式

来自分类Dev

每个产品的 SQL 重复访问者

来自分类Dev

如何构建 JavaScript ANTLR 访问者

来自分类Dev

没有针对“ Rat”类型的发起者的此类方法“ AngleCosine”