我正在开发一个比较文件的应用程序。我决定使用策略设计模式来处理不同的格式,所以我有这样的事情:
public class Report {
CompareStrategy strategy;
...
}
public interface CompareStrategy {
int compare(InputStream A, InputStreamB);
}
然后,自然而然地我实现了不同文件格式的比较方法。
现在假设我想添加另一种方法,该方法处理比较的某些限制(例如,在 Excel 或 csv 文件的情况下省略一行,或在 XML 中省略一个节点)。
是否会更好:
第二个问题是:由于差异可以是各种类型 - 是否可以制作标记界面差异以启用以下内容:
int compareWithDifferences(..., Iterable<Difference> differences);
然后继续定义特定文件格式的差异意味着什么?
最佳答案
看起来你需要 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/