menbbo

导航

 

策略模式

定义一系列算法将它们封装起来,并且可以相互替换;

使用场景

java  awt的布局管理器;

如果一个系统有许多类,它们之间的区别仅在于它们的行为,那么可以使用策略模式;

角色

context上下文:屏蔽高层模块对策略算法的直接访问,封装可能存在的变化;

strategy:抽象策略角色,对策略、算法家族的抽象,定义每个策略或者算法必须具有的方法和属性;

concreteStrategy:具体策略角色,用于实现抽象策略中的操作。

优点

符合开闭原则,新加具体策略时不用修改代码;

避免使用多重条件判断,可以和工厂模式搭配使用;

缺点

策略类会增多,每一个类都是一种策略。

jdk源码应用

Comparator接口常用的compare()方法,就是一个策略实际模式的应用,把Comparator作为参数使用生成不同的排序策略。

posted on 2022-03-06 15:49  menbbo  阅读(17)  评论(0编辑  收藏  举报