gpt4 book ai didi

java - 扩展策略模式的功能

转载 作者:搜寻专家 更新时间:2023-11-01 02:01:29 26 4
gpt4 key购买 nike

我正在开发一个比较文件的应用程序。我决定使用策略设计模式来处理不同的格式,所以我有这样的东西:

public class Report {
CompareStrategy strategy;
...
}


public interface CompareStrategy {
int compare(InputStream A, InputStreamB);
}

然后,我很自然地实现了针对不同文件格式的比较方法。

现在假设我想添加另一种方法,处理比较的某些限制(例如,在 Excel 或 csv 文件中省略一行,或者在 XML 中省略一个节点)。

是否会更好:

  1. 在接口(interface)和每个实现中添加另一个方法(目前很少)
  2. 写一个新的接口(interface)继承CompareStrategy然后实现?

第二个问题是:因为差异可以是多种类型的——是否可以制作一个标记接口(interface)差异来启用类似的东西:

int compareWithDifferences(..., Iterable<Difference> differences);

然后继续定义不同对于特定文件格式的意义?

最佳答案

Now suppose I wanted to add another method, that deals with certain restrictions for the comparison (e.g. omit a row in case of an Excel or csv file, or omit a node in XML).

看起来您需要 Template Pattern

你可以创建一些抽象类

public abstract class XMLCompareStrategy implements CompareStrategy {

public int compare(InputStream A, InputStreamB) {
// several steps
customMethod(...);
// more steps
}

protected abstract ... customMethod(...);

}

通过这种方式,您可以创建多个具有主要或核心功能的类,并为每种情况提供自定义详细信息

关于java - 扩展策略模式的功能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45431121/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com