【发布时间】:2017-10-23 17:12:39
【问题描述】:
我正在使用 Angular 2 从头开始创建自动完成功能。我需要监听不同的击键并根据按下的击键执行不同的操作。我必须听四种类型的击键:回车键、向下键、向上键和会触发新的自动完成查询的键(例如:退格键、字母数字键、删除键、输入文本框中字符串的值)。
我的项目负责人希望我实现一种用于创建击键处理程序的设计模式,并推荐了工厂模式(很可能作为设计模式的实践)。因此,理论工厂将为我的四种击键类型中的每一种创建不同的对象。侦听器返回一个字符串,我可以使用它来确定按下了哪个键(例如“ArrowUp”、“ArrowDown”、“Enter”)。因此输入处理程序将选择突出显示的选项并将其填充到文本框中。向下处理程序将取消选择当前选项并选择它下面的选项。
工厂确定要创建哪个对象的最佳方法是什么。例如,我可以这样做:
createHandler(keystroke) {
//or alternatively use a case statement
if(keystroke === "Enter") {
return new EnterHandler();
} else if(keystroke === "ArrowDown") {
return new ArrowDownHandler();
} else if(...)
}
但是在阅读了这个模式之后,这是一个“幼稚”的实现。对于我的特殊情况,根据传入的字符串了解要创建哪个对象的最佳方法是什么?或者我正在寻找的功能是否有另一种更好的模式?
【问题讨论】:
标签: oop design-patterns factory factory-pattern