1700465489
public Context(Strategy_strategy){
1700465490
1700465491
this.strategy=_strategy;
1700465492
1700465493
}
1700465494
1700465495
//封装后的策略方法
1700465496
1700465497
public void doAnythinig(){
1700465498
1700465499
this.strategy.doSomething();
1700465500
1700465501
}
1700465502
1700465503
}
1700465504
1700465505
高层模块的调用非常简单,知道要用哪个策略,产生出它的对象,然后放到封装角色中就完成任务了,如代码清单18-10所示。
1700465506
1700465507
代码清单18-10 高层模块
1700465508
1700465509
public class Client{
1700465510
1700465511
public static void main(String[]args){
1700465512
1700465513
//声明一个具体的策略
1700465514
1700465515
Strategy strategy=new ConcreteStrategy1();
1700465516
1700465517
//声明上下文对象
1700465518
1700465519
Context context=new Context(strategy);
1700465520
1700465521
//执行封装后的方法
1700465522
1700465523
context.doAnythinig();
1700465524
1700465525
}
1700465526
1700465527
}
1700465528
1700465529
策略模式就是这么简单,偷着乐吧,它就是采用了面向对象的继承和多态机制,其他没什么玄机。想想看,你真实的业务环境有这么简单吗?一个类实现多个接口很正常,你要有火眼金睛看清楚哪个接口是抽象策略接口,哪些是和策略模式没有任何关系,这就是你作为系统分析师的价值所在。
1700465530
1700465531
1700465532
1700465533
1700465535
设计模式之禅 18.3 策略模式的应用
1700465536
1700465537
18.3.1 策略模式的优点
1700465538
[
上一页 ]
[ :1.700465489e+09 ]
[
下一页 ]