基于Flipping Strategies 我们可以更好的控制feature,这样对于系统就可以有更灵活的管理
当然策略的使用还是比较简单的,同时我们也可以自己扩展策略
策略配置
- 参考实现
public class OfficeHoursFlippingStrategy extends AbstractFlipStrategy {
/** Start Hour. */
private int start = 0;
/** Hend Hour. */
private int end = 0;
/** {@inheritDoc} */
@Override
public void init(String featureName, Map<String, String> initValue) {
super.init(featureName, initValue);
assertRequiredParameter("startDate");
assertRequiredParameter("endDate");
start = new Integer(initValue.get("startDate"));
end = new Integer(initValue.get("endDate"));
}
/** {@inheritDoc} */
@Override
public boolean evaluate(String fName, FeatureStore fStore, FlippingExecutionContext ctx) {
int currentHour = Calendar.getInstance().get(Calendar.HOUR_OF_DAY);
return (currentHour >= start && currentHour < end);
}
}
- 参考配置
<?xml version="1.0" encoding="UTF-8" ?>
<features>
<feature uid="sayHello" enable="true" description="some desc">
<flipstrategy class="org.ff4j.sample.strategy.OfficeHoursFlippingStrategy" >
<param name="startDate">9</param>
<param name="endDate">18</param>
</flipstrategy>
</feature>
</features>
说明
一些内置策略的详细使用,可以参考github 文档