В зависимости от вашей схемы, метод listBooksOfAuthor()
(который выглядит как метод для сервисного объекта, такого как BookService
) может быть достаточным только с $authorId
, а не с полным Author
объектом.
Но мне кажется, я понимаю суть вопроса.Возможно, объект Author
дорогой для полного заполнения - скажем, с помощью метода, подобного AuthorService::getAuthorById()
.
В тех случаях, когда все, что вам нужно, это скромное подмножество функциональности Author
, тогда, возможно, вы могли бы создать отдельный интерфейс - возможно, что-то вроде AuthorSummaryInterface - который отражает только те методы, которые вам нужны в этих обстоятельствах.Разрешите объекту Author
реализовать этот интерфейс, чтобы, когда у вас уже был объект Author
, вы могли выполнять операции, для которых требуется только ограниченная функциональность Author
.В качестве альтернативы вы можете создать метод Author:getSummary()
, который возвращает конкретную реализацию AuthorSummaryInterface
.В этом методе вы могли бы обеспечить соблюдение требований к члену (например, иметь имя, например) и выдать исключение, если эти требования не выполняются.
Вы также можете создать набор методов - возможно, на AuthorService
объект или AuthorSummaryService
объект - который производит AuthorSummary
объекты.Затем в тех случаях, когда требуется только AuthorSummaryInterface
функциональность, вы можете создать эти ограниченные функциональные возможности, более дешевые для создания объектов.
Просто некоторые идеи.