项目中有些功能,只在特定调价下可供使用。所以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和客户端。
整个实现结构清晰。明确。非常赞。