多种异构数据的分析设计方案2:聊聊策略模式+函数式接口+MAP
定义
策略模式(Strategy Pattern): 定义并封装一系列算法类,并且这些类可以相互替换,可以在运行时根据需要选择不同的算法,而不需要修改客户端流程代码。
策略模式让算法独立于使用它的客户端而变化,也称为政策模式(Policy)。
主要解决,在有多种算法流程相似的情况下,使用许多if...else分支所带来的代码复杂且难以维护的问题。
关键代码:定义共通的函数时接口。
何时使用:一个系统有许多业务分支类,执行的业务逻辑一致,只是具体实现不同。
如何解决:将这些算法封装成一个一个的类,根据需求任意地组合替换。
业务场景:自动化工厂,按照不同维度度统计分析电量消耗,例如:1.楼栋楼层,2.设备类型,3.产品类型, 4.小时日月年等。
伪代码示例:
这是策略模式的一种变体:
把业务逻辑代码抽取到单独的函数里面,但如果有大量的条件,依然会造成类的膨胀和难以维护。
定义函数式接口
@FunctionalInterface
public interface MyFunction<P1, P2, P3, R> {
/**
*/
R exeFunction(P1 param1, P2 param2, P3 param3);
}