我正在使用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(...)
}
但在阅读了这个模式后,这是一个“天真”的实现。根据传入的字符串知道要创建哪个对象的最佳方法是什么?或者,我正在寻找的功能还有另一种更好的模式吗?
答案 0 :(得分:0)
您提议的实施方案可行。它干净简单。
您可以通过以下几种方式加强它: