介绍
在策略模式(Strategy Pattern)中,一个类的行为或其算法可以在运行时更改。这种类型的设计模式属于行为型模式。
在策略模式中,我们创建表示各种策略的对象和一个行为随着策略对象改变而改变的 context 对象。策略对象改变 context 对象的执行算法。
优点
- 算法可以自由切换
- 避免使用多重条件判断
- 扩展性良好
缺点
- 策略类会增多
- 所有策略类都需要对外暴露
注意事项
如果一个系统的策略多于四个,就需要考虑使用混合模式,解决策略类膨胀的问题
应用
算法需要自由切换的场景、同一抽象有多个子类,而且需要使用if-else、switch-case来选择具体的子类的时候
实现
关键代码:实现同一个接口
interface ClickListener{
public void onClick();
}
class View{
boolean TOUCH = true;
void setOnClickListener(ClickListener l){
if(TOUCH) l.onClick();
}
}
class Activity{
public static void main(String[] args) {
View view = new View();
view.setOnClickListener(new ClickListener(){
@Override
public void onClick() {
System.out.println("onclick");
}
});
// 想直接增加一个view就增加,方法也是可以复写的
}
}
onclick