分析feature toggle类

项目中有些功能,只在特定调价下可供使用。所以Ben写了一个feature toggle类。故名思义就是提供功能切换的类。

背景需求

1 需要按照storefront来实现功能的开关

2 对于没有通过storefront的,还可以通过一个optimizely进行开关

首先实现了一个上下文对象,context。context里包括了 userid 和 storefront。

然后定义了一个toggle接口。只含有一个enable方法。然后实现了3个具体的toggle类。他们是

  • optimzly
  • storfont
  • oneof

配置里,使用oneof来注入到service中。oneof的构造函数接受一组(迭代器)toggles。当他被询问enable的时候,它会逐个询问它的迭代器里的每个toggle。只要有一个返回true,它就返回true。所以名字叫做oneof。

配置oneof的时候,给他配置2个toggle。一个是storefront_de。一个是optimzley。
然后在storefornt_de只配置里storefront
optimizley 是依赖外部的optimizely服务的。所以配置需要一个key和客户端。

整个实现结构清晰。明确。非常赞。