在以下情况下如何实施开闭原则

时间:2018-12-02 06:17:14

标签: java design-patterns

我知道打开关闭原理是SOLID面向对象设计模式的一部分。我遇到的情况是,我有一个现有的Employee POJO类,其中包含10个字段,其getter和setter方法,重写的equals和hashcode方法。我有一个新要求,要向此旧Employee类添加5个以上字段。只是想了解有关如何处理这种情况的意见?一种简单的方法是将新的5个字段添加到现有的员工类中,并将其添加为getter和setter,从而实现扩展功能。但是,开放关闭原则表明,您不应触摸现有代码,而是尝试通过扩展现有代码而不更改现有代码来创建新代码。

有人可以指导我,怎么做?

2 个答案:

答案 0 :(得分:0)

OCP说,该类已关闭进行修改,并已打开进行扩展。因此,您应该将这些额外的字段添加到子类中(即扩展基类)。

答案 1 :(得分:0)

在查看开放式原理的维基百科页面时,我发现了Bertrand Meyer的这两句话:

  

如果模块仍可扩展,则称该模块为打开状态。例如,应该可以向其包含的数据结构添加字段,或者向其执行的功能集添加新元素。

     

如果某个模块可供其他模块使用,则该模块将被视为已关闭。假定已为模块提供了定义良好,稳定的描述(从信息隐藏的角度来说是接口)。

使用这些规则,那么您问题的答案是Employee类是否已在生产中使用。如果Employee类已经被生产中的其他类使用,则将其视为“已关闭”并且不可修改。如果生产中的任何其他类都没有使用Employee类,则将其视为“开放”的并且可以修改。

来源:Wikipedia