你的位置:首页 > ASP.net教程

[ASP.net教程]【设计模式】21、策略模式


 1 package com.shejimoshi.behavioral.Strategy; 2  3  4 /** 5  * 功能:上班的接口 6  * 时间:2016年3月9日下午8:53:34 7  * 作者:cutter_point 8 */ 9 public interface ToWork10 {11   /**12    * 上班方式13   */14   public abstract void workStyle();15 16 }

 

 1 package com.shejimoshi.behavioral.Strategy; 2  3  4 /** 5  * 功能:走步上班 6  * 时间:2016年3月9日下午8:55:15 7  * 作者:cutter_point 8 */ 9 public class WalkingWork implements ToWork10 {11 12   @Override13   public void workStyle()14   {15     System.out.println("走步上班");16   }17 18 }

 

 1 package com.shejimoshi.behavioral.Strategy; 2  3  4 /** 5  * 功能:使用工具去上班 6  * 时间:2016年3月9日下午8:57:35 7  * 作者:cutter_point 8 */ 9 public class ToolToWork implements ToWork10 {11 12   @Override13   public void workStyle()14   {15     System.out.println("使用工具去上班");16   }17   18 }

 

 1 package com.shejimoshi.behavioral.Strategy; 2  3  4 /** 5  * 功能:选择方式 6  * 时间:2016年3月9日下午9:15:52 7  * 作者:cutter_point 8 */ 9 public class Select10 {11   private ToWork tw;12   13   public Select(String type)14   {15     switch(type)16     {17     case "步行":18       WalkingWork ww = new WalkingWork();19       tw = ww;20       break;21     case "使用工具":22       ToolToWork ttw = new ToolToWork();23       tw = ttw;24       break;25     }26   }27   28   /**29    * 执行相应的策略30   */31   public void getResult()32   {33     tw.workStyle();34   }35 }

 

 1 package com.shejimoshi.behavioral.Strategy; 2  3  4 /** 5  * 功能:定义一系列的算法,把他们一个个封装起来,并且使他们可互相替换。 6  * 适用:许多相关的类仅仅是行为有差异 7  *     需要使用一个算法的不同变体 8  *     算法使用客户不该知道的数据 9  * 时间:2016年3月9日下午8:49:3410  * 作者:cutter_point11 */12 public class Test13 {14   public static void main(String[] args)15   {16     Select st = new Select("步行");17     st.getResult();18     Select st2 = new Select("使用工具");19     st2.getResult();20   }21 }

 

走步上班使用工具去上班