I had a scenario like below
interace A {
}
class B implements A {
}
Now during making changes, I realized that I have to extract out a repeating piece of code into a method.
say there is a method like below in class B:
private void domSomething() {
//sequence of steps
}
Now, the issue is that in future we expect other implementations of interface A to use method doSomething()
.
So the dilemma here is should method doSomething() be moved to a util class or we should create an abstract class with a protected doSomething()
method. Something like below.
abstract class C implements A {
protected void doSomething();
}
class B extends C {
}
Or create a Utils class and let B to still implement A.
Generally, I like to refrain from using abstract and look for ways to avoid them. So that leads to some questions here:
- Is that right way to think about abstract classes?
- Which approach should be more preferred here and why?
- Any other suggestion behind the thought process is always welcomed.