Как добиться принципа «Открыто закрыто», если в будущем вам потребуется добавить больше атрибутов?

#java #design-patterns

Вопрос:

Проблема заключается в том, чтобы идентифицировать владельцев на основе некоторой логики, а затем вернуть объект со всеми этими владельцами. Поэтому, если клиенту нужно 3 Владельца, верните объект с этими 3 Владельцами. Пример: Владелец A, Владелец B, Владелец C. Этот объект затем будет использоваться для добавления к другому объекту, учетной записи, которая будет отправлена в базу данных.

Я думал о создании интерфейса идентификации владельца, который могут реализовать классы. Затем создайте класс, у которого есть метод, который принимает переменные аргументы, которые будут повторяться во всех конкретных реализациях идентификатора владельца, и метод вернет карту<Владелец, строка>. Владелец-это тип перечисления, а строка-псевдоним владельца. Как только у меня будет карта, я смогу использовать ее для построения модели.

ОДНАКО я не уверен, что это действительно лучший подход…… Потому что тогда мне пришлось бы сопоставить значения на карте с определенным полем в объекте учетной записи. Затем, если будет добавлен новый тип владельца, мне придется изменить объект учетной записи…

Любые предложения очень помогли бы!!!

Комментарии:

1. Можете ли вы закодировать этот пример и указать, где вы видите проблему в коде?

Ответ №1:

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