Моя перспектива
Скажем, если вы использовали наследование.За период у вас появились новые атрибуты, которые являются общими только для Действие и Выпуск , но не Риск .Как вы справитесь с этим?Если вы поместите их в родительский элемент, тогда Risk наследует вещи, которые не имеют значения (стук принципа подстановки Лискова?).Если вы поместите затем в Action и Risk отдельно, то вы нарушите DRY, первоначальную причину, по которой вы начали наследование.Дело в том, что Наследственность для повторного использования - это плохо.Если нет «есть-а», то лучше не использовать его, а когда вы сомневаетесь, тогда нет реального «есть-а».
Мои предпочтения
Есть другие способы достижения СУХОГО, как показано в примере кода ниже.С этим добавлением новых свойств может быть Common2 , добавление нового поведения будет новым CommonBehavior2 , если они неприменимы ко всем 3 классам;если это так, просто измените существующие Common и CommonBehavior
public class Common implements CommonBehavior
{
String Description;
String title;
public void f() {}
}
public interface CommonBehavior
{
void f();
}
public class Action implements CommonBehavior
{
private Common delegate;
public void f()
{
delegate.f();
}
}
Также посмотрите на мой ответ на аналогичный вопрос с другим практическим примером Шаблон проектирования надобавить новый класс