Оформление вопроса в случае наследования - PullRequest
0 голосов
/ 28 апреля 2011

У меня есть вопрос, связанный с дизайном, относительно наследования.

Class A

protected field1
protected field2
protected field3

private List<B>

Класс B должен содержать field1, field2 и field3 +, определенные его собственные свойства.

Это нормально, если B может бытьсделано как подкласс A.

Эта связь почему-то не очень хорошо, как мое требование: Когда объект A имеет field1, field2 и field3, мы должны убедиться, что каждый объект в списке объекта A должен иметьте же поля.

Есть ли альтернатива, чтобы обеспечить это вышеупомянутое условие.

Спасибо.

Ответы [ 2 ]

0 голосов
/ 28 апреля 2011

Вы должны идти на композицию всегда, если между двумя классами нет строгих отношений IS-A.Дизайн с композицией гораздо более гибкий и ремонтопригодный.

0 голосов
/ 28 апреля 2011

Наследование является одним из вариантов.Я бы использовал его в этом случае.

Другой вариант - композиция, но тогда вам нужно как-то выставить поля, что зависит от предполагаемого использования

Class B {

private A a

// Constructor
public B(A instanceOfA) {
   this.a = instanceOfA
}

public setField1(value) {
   this.a.field1 = value
}

...

}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...