我创建了一个使用AI的游戏。这个AI有3个方法写在Angular Service 中
这是一个简化的代码:
app.service('AI', [function(){
return {
offer: angular.noop,
accept: angular.noop,
reject: angular.noop
}
}])
困难的部分是,方法的实现(以及人工智能的反应(可能会根据几个参数(国籍、年龄等(而变化
我曾想过使用棱角分明的装饰器,但我需要在几个装饰器之间进行选择。我可以创建文件/实现:
- 不到10个装饰.js
- 不足20个装饰.js
- 等等
但是我怎么能说:
"我有一个18岁的玩家…加载不到20个.decorator.js并应用decorator">
或
"我有一个18岁的玩家…用这个装饰器而不是这个">
继续:我想做一个条件装饰器(加载(。
经过一番搜索,我找到了一种方法:我可以返回原始服务,而不是返回$delegate,但我认为这不是一种很好的方法。。。
你有更好的解决方案吗?
您是否考虑过使用工厂而不是服务?
// teenagerAI and adultAI could be values, constants, factories...
app.factory('createAI', function (teenagerAI, adultAI) {
return function (aiType) {
switch (aiType) {
case 'teenager':
return teenagerAI;
case 'adult':
return adultAI;
}
};
});
然后可以注入createAI
并使用它:
createAI('adult');