假设我的应用程序有一些服务实现为
ClassA
和ClassB
。两者都有一些相似之处,但也存在差异。
- 这两个类都有一个
start()
方法,具有相同的方法签名,但实现不同。 - 这两个类都有一个
process()
方法,具有不同的签名和不同的实现。 - 这两个类都有一个相同的
log()
方法,即代码完全相同。
Class A
public class ClassA {
public String start(String s1, String s2) {
startImplementation();
return someString;
}
public String process(String s) {
processingImplementation();
return processedString;
}
private String log(String s) {
logImplementation();
return sharedString;
}
}
B类
public class ClassB {
public String start(String s1, String s2) {
otherStartImplementation();
return someString;
}
public String process(Long l) {
otherProcessingImplementation();
return processedString;
}
private String log(String s) {
logImplementation();
return sharedString;
}
}
我在思考如何使用“设计模式”更加通用地组织这个内容,但遇到了些困难。至于第三点,我可以将这个方法轻松地移到一个超类中,让ClassA
和ClassB
来继承它。但是我该如何设计应用程序,以便同时考虑第一点和第二点呢?
第一点听起来有点像接口,但我不知道怎样与第三点的超类结合起来。那么第二点呢?
start()
时,它是否希望在 A 和 B 中具有统一的语义?其他方法呢? - root