Должен ли я сделать интерфейсы для моих сущностей? - PullRequest
3 голосов
/ 01 апреля 2012

Это нормально / рекомендуется создавать интерфейсы для сущностей в приложении?Если это так, должны ли методы getter / setters быть объявлены в интерфейсе или только бизнес-методы?

Ответы [ 6 ]

4 голосов
/ 01 апреля 2012

Интерфейс для бизнес-логики, он объявляет поведение или функциональность вашего модуля.POJO - это просто объекты, которые содержат данные и не должны выполнять какую-либо логику, поэтому нет.

2 голосов
/ 01 апреля 2012

Вы можете создавать интерфейсы, если имеет смысл сделать это: будет ли несколько классов, имеющих одинаковую функциональность (т. Е. Будут ли они предоставлять один и тот же интерфейс)?В этом случае вы можете создать интерфейс с этими методами (бизнес-логики).

Кроме того, интерфейс не содержит переменных для отслеживания состояния, они будут частью класса, реализующего интерфейс,Несколько классов с одним и тем же интерфейсом могут реализовывать его по-разному, поэтому нет необходимости указывать переменные (и, следовательно, геттеры и сеттеры) в интерфейсе.

1 голос
/ 01 апреля 2012

Интерфейс определенно не должен содержать геттеров и сеттеров.Интерфейс предоставляет только те функции, которые может выполнять ваш класс (если вам нужны методы получения / установки - используйте абстрактные классы).Поля обычно (не всегда, конечно) только часть реализации.

Итак, если ваш класс содержит только данные, в интерфейсах нет необходимости

0 голосов
/ 02 апреля 2012

Ну, я не думаю, что entity / pojo как интерфейс имеет какой-либо смысл, потому что entity или pojo имеют свойства с геттерами и сеттерами И, используемые для данных. предположим, если вы предоставляете интерфейс и его реализацию (в POJO, который реализует интерфейс), и вы сохраняете его в базе данных, используя ссылку на интерфейс класса реализации. Это нормально, он сохранится, но что если вы предоставите еще одно ПО, которое реализует тот же интерфейс. Это определенно нарушит значение ПОЖО, и, разумеется, оно сбивает с толку, какое ПОЖО должно сохраняться.

0 голосов
/ 01 апреля 2012

Пожалуйста, взгляните на эту прекрасную статью, в которой обсуждается "чрезмерное использование" шаблона интерфейса / реализации.Обычно бины сущностей не следуют подобному шаблону, и здесь вы найдете вескую причину:

http://marekdec.wordpress.com/2011/12/06/explicit-interface-per-class-antipattern/

0 голосов
/ 01 апреля 2012

Можно утверждать, что использование интерфейса для сущности может использоваться для отделения клиентов от того, что они имеют дело с JPA.Иногда у меня возникает ситуация, когда мне нужно несколько производных непостоянных бизнес-объектов рядом с постоянными объектами, которые оба используют один и тот же интерфейс.В таких случаях я считаю это целесообразным.Но вы должны ограничить такое использование только для чтения случаев, когда вам не нужно возражать против транзакций.

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