У меня есть что-то вроде следующего:
public interface A
{
....
}
public abstract class AbstractClass implements A
{
// Implements some methods from interface
....
}
public abstract class GroupOne extends AbstractClass
{
// Implements some methods from interface
// Define couple of abstract methods
.....
}
public abstract class GroupTwo extends AbstractClass
{
// Implements some methods from interface
// Define couple of abstract methods
.....
}
public class ClassImpl extends GroupOne
{
// Implement couple of abstract methods from GroupOne
}
public class AnotherClassImpl extends GroupTwo
{
// Implement couple of abstract methods from GroupTwo
}
В моем случае, взаимодействия и абстрактные классы предоставляются как часть библиотеки.Приложение, которое использует эту библиотеку, должно написать классы Impl, расширяющие абстрактные классы второго уровня.Есть некоторые общие функциональные возможности для всех классов в AbstractClass, а затем есть некоторые специфичные для группы функциональные возможности в групповых классах.
Это хороший дизайн?Причина, по которой я спрашиваю об этом, заключается в том, что я едва сталкивался с иерархией классов, в которой задействовано несколько абстрактных классов.