如何选择合适的装饰师



我创建了一个使用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');

相关内容

  • 没有找到相关文章

最新更新