zoukankan      html  css  js  c++  java
  • 【设计模式】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 ToWork
    10 {
    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 ToWork
    10 {
    11 
    12     @Override
    13     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 ToWork
    10 {
    11 
    12     @Override
    13     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 Select
    10 {
    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:34
    10  * 作者:cutter_point
    11  */
    12 public class Test
    13 {
    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 }
    走步上班
    使用工具去上班
    
  • 相关阅读:
    WAVECOM CDMA Modem 发送短信
    【转】关于正则表达式匹配任意字符(包括换行符)的写法
    MS2000 差异备份 还原
    推荐一款非常适用的弹框 phpcms v9都用的这个!!!!
    正则截取内容
    javascript面向对象编程实现
    一次 全部删除MSSQL数据库用户表,存储过程
    【转】 jQuery图片预加载+等比例缩放
    多种多样的Loading特效
    关于图片轮播的几种思路
  • 原文地址:https://www.cnblogs.com/cutter-point/p/5259874.html
Copyright © 2011-2022 走看看