java - 将抽象类放在包含其派生类的同一个包中是不是不好的编程习惯?

标签 java package abstract-class derived-class

假设 A、B、C 派生自 AbstractBaseClass,并且它们都是同一个 java 项目的一部分,是以下形式的包结构...

 package com.whatever.###
 AbstractBaseClass.java

 package com.whatever.###.###
 A.java
 B.java
 C.java

...通常优先于以下形式的包结构...

 package com.whatever.###.###
 AbstractBaseClass.java
 A.java
 B.java
 C.java

?

... 还是很少有人会关心?

最佳答案

我使用第一个示例编写了一个相当复杂的应用程序,下面是我如何证明设计的合理性。在我的案例中,有一个与承保案例定价相关的通用界面,但有几个供应商可以提供不同的 Web 服务来填充实际数据。这是包结构

com.example.pricing
 \IPricingProvider.java
 \AbstractPriceProvider.java
com.example.pricing.vendorA
   \PricingEngine.java
com.example.pricing.vendorB
   \PricingEngine.java
com.example.pricing.vendorC
   \PricingEngine.java

然后在我的代码中,我使用import 来连接我想要的引擎。像这样:

import com.example.pricing.*;
import com.example.pricing.vendorB.*;

IPricingProvider provider = Engine.create();

对我来说,优势是能够为每个供应商提供复杂而困惑的实现(两个是基于休息的,一个是使用 wsimport 的 Web 服务,所以有很多生成的 Java 文件)而不是让 Eclipse 自动完成看起来像一场噩梦。此外,还可以更轻松地将单个供应商移交给不同的开发人员。

关于java - 将抽象类放在包含其派生类的同一个包中是不是不好的编程习惯?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14757973/

相关文章:

c++ - 指向模板抽象类的指针 vector ?

java - JGraph(T)图元选择定制

java - SCORM:Java 中基于 Web 的 SCORM 播放器

java - Tomcat 安全角色映射

python - 兄弟包导入

package - 在 Julia 中导入板包

java - 在抽象类中执行方法执行顺序

java - 入站属性骡子创建

java - 当我想在 jsp 文件中使用类时,Eclipse 添加完整的包路径

java - 如何访问 "unnamed"类的方法?