打字猴:1.700465384e+09
1700465384 context=new Context(new BlockEnemy());
1700465385
1700465386 context.operate();//孙夫人退兵
1700465387
1700465388 System.out.println(”\n\n\n\n\n\n\n\n”);
1700465389
1700465390 }
1700465391
1700465392 }
1700465393
1700465394 我们来看看这段故事,运行结果如下:
1700465395
1700465396 –刚刚到吴国的时候拆第一个–
1700465397
1700465398 找乔国老帮忙,让吴国太给孙权施加压力
1700465399
1700465400 –刘备乐不思蜀了,拆第二个–
1700465401
1700465402 求吴国太开个绿灯,放行!
1700465403
1700465404 –孙权的小兵追了,咋办?拆第三个–
1700465405
1700465406 孙夫人断后,挡住追兵
1700465407
1700465408 恩,不错,就这三招,搞得孙权是“陪了夫人又折兵”。那我们描述这个故事的过程就是策略模式。
1700465409
1700465410
1700465411
1700465412
1700465413 设计模式之禅 [:1700453997]
1700465414 设计模式之禅 18.2 策略模式的定义
1700465415
1700465416 策略模式(Strategy Pattern)是一种比较简单的模式,也叫做政策模式(Policy Pattern)。其定义如下:
1700465417
1700465418 Define a family of algorithms,encapsulate each one,and make them interchangeable.(定义一组算法,将每个算法都封装起来,并且使它们之间可以互换。)
1700465419
1700465420 这个定义是非常明确、清晰的,“定义一组算法”,看看我们的三个计谋是不是三个算法?“将每个算法都封装起来”,封装类Context不就是这个作用吗?“使它们可以互换”当然可以互换了,都实现是相同的接口,那当然可以相互转化了。我们看看策略模式的通用类图,如图18-3所示。
1700465421
1700465422
1700465423
1700465424
1700465425 图18-3 策略模式通用类图
1700465426
1700465427 策略模式使用的就是面向对象的继承和多态机制,非常容易理解和掌握,我们再来看看策略模式的三个角色:
1700465428
1700465429 ❑Context封装角色
1700465430
1700465431 它也叫做上下文角色,起承上启下封装作用,屏蔽高层模块对策略、算法的直接访问,封装可能存在的变化。
1700465432
1700465433 ❑Strategy抽象策略角色
[ 上一页 ]  [ :1.700465384e+09 ]  [ 下一页 ]