Шаблон проектирования для построения объекта из более сложного объекта - PullRequest
2 голосов
/ 17 июля 2009

Я занимаюсь рефакторингом некоторого кода в моем текущем проекте, и я хотел бы получить некоторую информацию, если какой-либо шаблон проектирования существует для следующего сценария.

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

Теперь код, который заполняет объект Result из объекта Intermediary, уже существует, но, поскольку я занимаюсь рефакторингом, я хочу сделать его чище. Я думал о создании отдельного класса, возможно, под названием ResultBuilder, который имеет статический метод выполнения, который принимает в качестве входных данных Intermediary и выплевывает Result в качестве выходных.

Существует ли шаблон проектирования, эквивалентный классу "ResultBuilder"? Есть ли лучший способ построить объект Result из объекта-посредника?

Ответы [ 5 ]

2 голосов
/ 17 июля 2009

Полагаю, вам нужен шаблон Factory.

1 голос
/ 17 июля 2009

Я бы посоветовал взглянуть на шаблоны Builder и Factory , оба из которых - модели Gang of Four. Есть примеры как в Википедии, так и в Java.

1 голос
/ 17 июля 2009

Образец Строителя!

хотя обычно это процесс сборки, состоящий из нескольких частей .... если он просто делает что-то одно, то это скорее фабрика ....

это стандартный шаблон GOF

1 голос
/ 17 июля 2009

Почему у Result не может быть конструктора, который принимает экземпляр Intermediary?

1 голос
/ 17 июля 2009

Похоже, что у вас уже есть решение, так почему вы считаете необходимым иметь какой-то внешний источник, чтобы назвать его для вас, чтобы он стал более действительным?
Если это имеет смысл для вас и действительно делает вещи яснее и чище, просто сделайте это, не задумываясь о названиях и ярлыках.

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