假设 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/