Можете проверить мою реализацию FactoryMethod?
Всем привет, сейчас читаю книгу "Погружение в паттерны проектирования" и начал с самого начала. С 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.
Служба підтримки клієнтів працює на UserEcho
Сергей, здравствуйте!
Вероятно это чувство вызвано вот этим куском:
Этот код напрашивается на перенос в саму фабрику. В этом патерне, чаще всего пользователем создаваемого продукта выступает остальной код Создателя (класс Dialog), поэтому я и не люблю называть Создателя "фабрикой" — в какноничном устройстве паттерна он производит продукты чисто для себя. Расширяя этот класс, вы подменяете создаваемый продукт, расчитывая что основной код Создателя теперь станет работать с этим новым продуктом.
Вообще, для практики я бы вам рекомендовал конвертировать примеры с PHP, там прекрасный сет примеров с web-спецификой, который для вас, вероятно, будет куда ближе, чем джавовские GUI.