Let's say my application has some services implemented as ClassA
and ClassB
. Both have some similarities but also differences.
- Both classes have a
start()
method with the same method signature but a different implementation. - Both classes have a
process()
method with a different signature and a different implementation. - Both classes have an identical
log()
method, i.e. the code is exactly the same.
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;
}
}
Class 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;
}
}
I'm having trouble thinking of a "design pattern" how I could organize this in a more generic way. As of 3. I could easily move this method to a superclass which ClassA
and ClassB
extend. But how would/could I design the application so that 1. and 2. are also taken into account?
Item 1. sounds a little bit like an interface to me but I don't have any idea how this could be combined with the superclass for item 3. And what about item 2?
Aucun commentaire:
Enregistrer un commentaire