【发布时间】:2014-10-11 23:33:51
【问题描述】:
首先,很抱歉我的措辞不完善,如果有不清楚的地方请告诉我。
在构建 Java 应用程序的类结构时,我想知道在我的案例中是否存在我尚未找到的已知最佳实践。
例如,有A、B、C等多个类指定设备类型,每个设备都有分词器、解析器和编译器。
首先,我有四个这样的接口。
interface Device {
public void x();
public int y();
public String z();
...
}
interface Tokenizer {...}
interface Parser {...}
interface Compiler {...}
而且,实际的具体类是,
public class ADevice implements Device {...}
public class BDevice implements Device {...}
public class CDevice implements Device {...}
class ATokenizer implements Tokeninzer {...}
class BTokenizer implements Tokeninzer {...}
class CTokenizer implements Tokeninzer {...}
class AParser implements Parser {...}
...
class ACompiler implements Compiler {...}
...
另外且重要的是,“设备”类及其接口是公开的,因此将包含在存根库中。其他任何内容都将仅包含在实际库中,并且对通过引用 API 生成脚本的用户不可见。
这是我的问题,(长介绍:[)
如何实现每种类型及其对应接口之间的内聚。
更详细地说,有没有办法在编译时确定它们是否在每种类型的设备接口及其对应的标记器、解析器或编译器接口之间正确配对?
例如,有一个使用“Device”对象和“Tokenizer”、“Parser”和“Compiler”对象的管理器类。如您所见,“ADevice”对象只能与“ATokenizer”、“AParser”或“ACompiler”成对出现。但是,如果我们从接口定义设备对象的类型,那么我们无法判断这些对象是否对应于正确的“Tokenizer”、“Parser”或“Compiler”对象,除了“instanceOf”操作员在运行时。 比如“ADevice”可以匹配“BTokenizer”、“CParser”等,不会产生编译错误。
我希望我想听到一个好的答案或重定向到参考。
【问题讨论】:
-
不同的设备实现有何不同?能举个例子吗?
-
欢迎光临,别担心,我们做喜欢长篇介绍!你能明确说明 A、B 和 C 代表什么吗?我相信泛型会优雅地解决您的问题。
标签: java design-patterns architecture interface structure