Strategy Pattern (策略模式)

  1. <?xml version="1.0" encoding="utf-8"?>
  2. <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" xmlns:local="*" creationComplete="designpatterns()">
  3.     <mx:Script>
  4.         <![CDATA[
  5.             import flash.display.Sprite;
  6.             import designpatterns.strategy.*;
  7.             public function designpatterns():void
  8.             {
  9.                var context:Context=new Context();
  10.                //设置策略
  11.                context.strategy=new ConcreteStrategyA()
  12.                context.ContextInterface()
  13.                //runtime 更改策略B
  14.                context.strategy=new ConcreteStrategyB()
  15.                context.ContextInterface()
  16.                //runtime 更改策略C
  17.                context.strategy=new ConcreteStrategyC()
  18.                context.ContextInterface()
  19.             }
  20.         ]]>
  21.     </mx:Script>
  22. </mx:Application>

Context.as

 

*set方法里一定要有参数。

  1. package designpatterns.strategy
  2. {
  3.     public class Context
  4.     {
  5.         private var _strategy:IStrategy
  6.         public function set strategy(p_strategy:IStrategy):void{
  7.          this._strategy=p_strategy;
  8.         }
  9.         public function ContextInterface():void{
  10.          this._strategy.AlgorithmInterface()
  11.         }
  12.     }
  13. }

IStrategy.as 

  *注:接口实现这一接口的类都是这个接口的数据类型,说以可以声明一个接口来等于一个实现他这个接口的类的实例。

  1. package designpatterns.strategy
  2. {
  3.     public interface IStrategy
  4.     {
  5.         function AlgorithmInterface():void
  6.     }
  7. }

ConcreteStrategyA.as

 

  1. package designpatterns.strategy
  2. {
  3.     public class ConcreteStrategyA implements IStrategy
  4.     {
  5.         public function AlgorithmInterface():void
  6.         {
  7.             trace("调用策略A")
  8.         }
  9.         
  10.     }
  11. }

ConcreteStrategyB.as

  1. package designpatterns.strategy
  2. {
  3.     public class ConcreteStrategyB implements IStrategy
  4.     {
  5.         public function AlgorithmInterface():void
  6.         {
  7.             trace("调用策略B")
  8.         }
  9.         
  10.     }
  11. }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值