0
Отвечено

Можете проверить мою реализацию FactoryMethod?

Сергей Панай 5 лет назад обновлен anonymous 5 лет назад 1

Всем привет, сейчас читаю книгу "Погружение в паттерны проектирования" и начал с самого начала. С FactoryMethod. Решил повторить пример с кнопками и чуть его развить, но почему то мне кажется, что я этот паттерн использую не правильно. Именно в части использования в index.ts.
Код тут: https://github.com/panay/patterns/tree/master/factory-method

Ответ

Ответ
Отвечено

Сергей, здравствуйте!

Вероятно это чувство вызвано вот этим куском:

this.button = this.dialog.createButton();

this.button.onClick(()=> {
console.log(`Hello ${this.env}`);
})

console.log(this.button.render());

Этот код напрашивается на перенос в саму фабрику. В этом патерне, чаще всего пользователем создаваемого продукта выступает остальной код Создателя (класс Dialog), поэтому я и не люблю называть Создателя "фабрикой" — в какноничном устройстве паттерна он производит продукты чисто для себя. Расширяя этот класс, вы подменяете создаваемый продукт, расчитывая что основной код Создателя теперь станет работать с этим новым продуктом.

Вообще, для практики я бы вам рекомендовал конвертировать примеры с PHP, там прекрасный сет примеров с web-спецификой, который для вас, вероятно, будет куда ближе, чем джавовские GUI.

ХОРОШО, МНЕ ПОНРАВИЛОСЬ
Оценка удовлетворенности от Сергей Панай 5 лет назад
Ответ
Отвечено

Сергей, здравствуйте!

Вероятно это чувство вызвано вот этим куском:

this.button = this.dialog.createButton();

this.button.onClick(()=> {
console.log(`Hello ${this.env}`);
})

console.log(this.button.render());

Этот код напрашивается на перенос в саму фабрику. В этом патерне, чаще всего пользователем создаваемого продукта выступает остальной код Создателя (класс Dialog), поэтому я и не люблю называть Создателя "фабрикой" — в какноничном устройстве паттерна он производит продукты чисто для себя. Расширяя этот класс, вы подменяете создаваемый продукт, расчитывая что основной код Создателя теперь станет работать с этим новым продуктом.

Вообще, для практики я бы вам рекомендовал конвертировать примеры с PHP, там прекрасный сет примеров с web-спецификой, который для вас, вероятно, будет куда ближе, чем джавовские GUI.

Сервис поддержки клиентов работает на платформе UserEcho