首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Java接口设计

Java接口设计
EN

Stack Overflow用户
提问于 2012-12-18 16:46:24
回答 4查看 777关注 0票数 1

我有一个简单的(可能是很常见的)设计问题。假设我有一个如下所示的接口:

代码语言:javascript
复制
public interface AnalysisResult {

    BigDecimal getMeasure();

}

但是,这是由几个不同的具体实现-一些包括平均值字段以及,一些包含各种属性的计数等。现在,我得到了一组结果,我希望能够根据类型输出结果,即Mean AnalysisResult会说平均值在度量值之上等。此外,可能会出现这样的情况:我希望根据类型输出一些内容,例如:“This is the Mean result”……您是否认为,在这种情况下,简单地使用instanceof并在输出器端完成工作会更容易?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2012-12-18 16:50:20

我想再延期一次..就像这样

代码语言:javascript
复制
public interface Measure {
   public String getOutputAsTxt();
   public String getOutputAsCsv();
   public String getOutputAsFunnyFormat();
};

public interface AnalysisResult {

  public Measure getMeasure();

}

从而将输出专门化移动到特定的度量。是的,这会添加一些代码,但会保持所有内容的整洁和分离。

或者,我会尝试探索一下访问者模式(这是一种简单的实现)。

有关更多信息,请参考this SO question中选择的答案(每次我读到它时,我都有一种冲动,想要+1来欣赏它的威力)

票数 1
EN

Stack Overflow用户

发布于 2012-12-18 16:53:23

根据类型的结果:

这是一个单独的行为,因此建议您实现类似于策略模式的东西。有一个具有print()方法的基接口。然后,您可以在多个实现类中实现此方法,如CSVStylePrint、HTMLStylePrint等。

这样,您的打印功能是独立的,并遵循OCP (开放关闭原则:即开放以扩展,但关闭以进行更改)原则。OCP是在策略模式中使用的底层设计原则。

票数 0
EN

Stack Overflow用户

发布于 2012-12-18 16:55:05

我建议在接口中使用公共字符串getOutput(String格式)方法。

让实现根据'format‘参数决定返回什么。

这也有助于调用特定于特定实现的方法。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13929247

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档