我创建了一个使用AI的游戏。这个AI'API必须使用Angular Service编写3种方法
这是一个简化的代码:
app.service('AI', [function(){
return {
offer: angular.noop,
accept: angular.noop,
reject: angular.noop
}
}])
困难的部分是方法实施(以及AI如何反应)可以根据几个参数(国籍,年龄等)改变。
我想过使用角度装饰器,但我需要在几个装饰器之间进行选择。 我可以创建文件/实现:
但我怎么能说:
“我有一个18岁的玩家......加载少于20.decorator.js并申请装饰”
OR
“我有一个18岁的球员......使用这个装饰而不是这个”
要恢复:我想做一个条件装饰器(加载)。
经过一番搜索,我发现了一种方法:我可以返回原始服务而不是返回$ delegate,但我认为这不是一个很好的方式......
你有更好的解决方案吗?
答案 0 :(得分:0)
您是否考虑过使用工厂而非服务?
// 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');