Joh*_*ith 8 java abstract-class derived-class package
假设 A、B、C 派生自 AbstractBaseClass,并且它们都是同一个 java 项目的一部分,是以下形式的包结构...
package com.whatever.###
AbstractBaseClass.java
package com.whatever.###.###
A.java
B.java
C.java
Run Code Online (Sandbox Code Playgroud)
...通常优于以下形式的封装结构...
package com.whatever.###.###
AbstractBaseClass.java
A.java
B.java
C.java
Run Code Online (Sandbox Code Playgroud)
?
...或者很少有人会关心?
我使用第一个示例编写了一个相当复杂的应用程序,以下是我如何证明设计的合理性。就我而言,有一个与承保案例定价相关的通用界面,但有几个供应商可以提供不同的 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
Run Code Online (Sandbox Code Playgroud)
然后在我的代码中,我使用 来import连接我想要的引擎。像这样:
import com.example.pricing.*;
import com.example.pricing.vendorB.*;
IPricingProvider provider = Engine.create();
Run Code Online (Sandbox Code Playgroud)
对我来说,优点是能够为每个供应商提供复杂而混乱的实现(其中两个是基于 REST 的,一个是使用 Web 服务,wsimport因此会生成大量 Java 文件),并且不会使 Eclipse 自动完成看起来像一场噩梦。它还使得将单个供应商移交给不同的开发人员变得更容易。
| 归档时间: |
|
| 查看次数: |
3601 次 |
| 最近记录: |