java - 避免组合模式java中的冗余

标签 java oop inheritance design-patterns composition

我有两个类 A 和 B。现在,我有 B“有一个”A 关系。因此,这里要遵循的最琐碎的事情是组合模式。现在,B 的字段之一是 A 的对象。问题是 A 和 B 的某些字段是公共(public)的。因此,在这种情况下,这些字段将是多余的。我无法从公共(public)字段创建抽象类并让 A 和 B 继承它,因为它们已经扩展了一些抽象类。在这种情况下,最佳做法是什么?

最佳答案

如果 A 和 B 不能有公共(public)基类,则不能将公共(public)字段放在这样的类中。

避免冗余的一种方法是创建第三个类 C,其中包含 A 和 B 的公共(public)字段,并让 A 和 B 都拥有类 C 的成员。

只有当公共(public)字段作为一个单独的类有意义时,这样的重构才有意义(即该类将代表一些现实生活中的对象或概念,而不仅仅是一组任意的字段)。否则我会保留多余的字段。

例如,OfficePerson 可能没有公共(public)基类(Object 除外),但假设两者其中的一些具有街道名称、城市、邮政编码等属性......您可以很容易地看到这些字段应该被提取到 Address 类中。

关于java - 避免组合模式java中的冗余,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31020432/

相关文章:

c++ - 如何从继承的父类创建 unique_ptr

java - 为每个响应改造解串器

c# - 分配的值未在任何执行路径中使用 - C#

java - 在没有 Eclipse 的情况下创建和使用 Java 包

c++ - C++如何在内部实现多态性?

c# - 返回子类实例的方法

python - 从实例而不是类继承 [Python 3]

java - 如何为Struts doubleselect标签中的两个文本框赋予不同的标签?

java - imageView 的图像尺寸

java - 从 ArrayList 中删除给定长度的字符串?