Re: Дизайн: когда имеет смысл использовать вложенные public static классы
От: Blazkowicz Россия  
Дата: 24.05.12 07:34
Оценка: 3 (1)
Здравствуйте, RolandD, Вы писали:

RD>Есть сущность Entity, размещенная в пакете com.mycompany.entitypackage.

RD>У нее есть какие-то черты, которые следует выделить в класс EntityTraits, который потом будет использоваться отдельно от Entity. При этом, EntityTraits связан с Entity, например, не бывает так, чтобы тот кто использует Entity не использовал бы EntityTraits.
RD>В каких случаях следует определять EntityTraits как public static class вложенный в класс Entity, какие бы вы выделили критерии для этого?
RD>Или же всегда рекомендуется разместить EntityTraits в com.mycompany.entitypackage.EntityTraits?

Обычно получается так. Делается анонимный класс как необходимость решения какой-то задачи внутри класса (Listener, например). Затем этот класс начинает обладать некоторой логикой (получает свои поля и методы). В этом случае уже есть смысл конвертировать анонимный во вложеный. Если вложеный класс сильно связан с внешним классом, то его нельзя переиспользовать, и, логично, оставить его внутри.
Если он слабо связан с внешним классом и его можно переиспользовать. То нужно выносить из класса.

Обратите внимание, что вложеные классы могут быть не static. Тогда их нельзя использовать без экземпляра внешнего класса.

В вашем случае, так как это просто сущности с данными, особой разницы нет. Если EntityTraits регулярно используется без Entity, то нужно делать отдельный класс. Если оно используется только в паре с Entity, то вложеный.
Дизайн: когда имеет смысл использовать вложенные public static классы
От: RolandD  
Дата: 24.05.12 07:03
Оценка:
Есть сущность Entity, размещенная в пакете com.mycompany.entitypackage.
У нее есть какие-то черты, которые следует выделить в класс EntityTraits, который потом будет использоваться отдельно от Entity. При этом, EntityTraits связан с Entity, например, не бывает так, чтобы тот кто использует Entity не использовал бы EntityTraits.

Вопрос:
В каких случаях следует определять EntityTraits как public static class вложенный в класс Entity, какие бы вы выделили критерии для этого?
Или же всегда рекомендуется разместить EntityTraits в com.mycompany.entitypackage.EntityTraits?
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.