论坛首页 编程语言技术论坛

对设计模式—strategy模式的认识

浏览 1644 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2008-03-23  
最近学习一下设计模式中的strategy模式,下面是我对 strategy模式的认识。
strategy是对象行为型模式,主要是定义一系列的算法,把这些算法一个
个封装成单独的类.
strategy的实现是由一个抽象类作为一个基类,在基类的基础上生成不同的类,这些类为我们在不同场景提供了不同的选择。
比如说,最近台湾要公投,出现台海危机,我们应如何应付出现的危机那,这时我们提供的多种方案供我们在不同的危机做不同的处理。
public abstract class CrisisEvent
{
     public void happen();//发生危机
      public abstract void dealEvent();//应对危机方案
}
    
public class CrisisEventSmallWar extends CrisisEvent
{
   public void dealEvent()
   {
         //小规模开战,没有美国等参与
    }
}
   
public class CrisisEventBigWar extends CrisisEvent
{
    public void dealEvent()
    {
        //大规模开战,炸掉美国航母  
     }    
}
   
public class CrisisEventExecute
{
   private CrisisEvent   _crisisEvent;
     
   public CrisisEventExecute(CrisisEvent crisisEvent)
   {
      this._crisisEvent = crisisEvent;  
   }

   public void dealEvent()
   {
      _crisisEvent.dealEvent();
   }
  
   public void changeCrisisEvent(CrisisEvent otherCrisisEvent)
   {
      _crisisEvent = otherCrisisEvent;
   }
}
 
public class TestDealEvent()
{  
   public static void main(String[]args)
   {
     CrisisEventExecute smallCrisisEvent = new CrisisEventExecute(new CrisisEventSmallWar);
     smallCrisisEvent.dealEvent();
     CrisisEventExecute bigCrisisEvent = new CrisisEventExecute(new CrisisEventBigWar);
     bigCrisisEvent .dealEvent();
   }
}
  


Strategy 和Factory 有一定的类似,Strategy 相对简单容易理解,并且可以在运行时刻自由切换。Factory 重点是用来创建对象。
Strategy 适合下列场合:
1.以不同的格式保存文件;
2.以不同的算法压缩文件;
3.以不同的算法截获图象;
4.以不同的格式输出同样数据的图形,比如曲线 或框图bar 等
论坛首页 编程语言技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics