zoukankan      html  css  js  c++  java
  • java中的策略设计模式

    本文主要讲java中的策略模式:一个可以根据不同的传入参数而具有不同行为的方法,就叫策略模式。概念可能有点不好理解,具体看下面代码:

    import java.util.Arrays;
    
    /**
     * 策略模式 一个可以根据不同的传入参数而具有不同行为的方法,就叫策略模式
     * @author dsj 2015-8-3 下午1:15:41
     */
    public class Celv {
        static String s ="a策略 B模式";
        public static void main(String[] args) {
            myProcess(new Upcase(), s);
            myProcess(new Downcase(), s);
            myProcess(new Splitter(), s);
        }
        
        public static void myProcess(Process process,Object s){
            System.out.print(process.name()); 
            System.out.println(":"+process.process(s));
        }
    
    }
    
    /** 基类提供了两个公共发货:获取类名称方法,处理方法 **/
    class Process {
        public String name() {
            return getClass().getSimpleName();
        }
    
        Object process(Object input) {
            return input;
        }
    
    }
    
    /** Process的子类具有转换字母为大写的功能**/
    class Upcase extends Process{
        /**
         * Override:重写,他们的关系是父子关系,必须是方法名,参数的类型、个数、顺序,以及返回值都必须和父类相同才行。
         * OverLoad:重载,他们的关系同类的不同方法,方法名相同其余都可以不同
         */
        @Override
        String process(Object input) {
            return ((String)input).toUpperCase();
        }
    }
    
    /** Process的子类,具有转换字母为小写的功能 **/
    class Downcase extends Process{
        
        @Override
        String process(Object input) {
            return ((String)input).toLowerCase();
        }
    }
    
    /** Process子类,具有截取字符串的功能 **/
    class Splitter extends Process{
        @Override
        Object process(Object input) {
            return Arrays.toString(((String)input).split(" "));
        }
    }

    运行结果:

    Upcase:A策略 B模式
    Downcase:a策略 b模式
    Splitter:[a策略, B模式]
  • 相关阅读:
    单分发器
    Python 虚拟环境
    $modal
    memoization
    directive例子2
    UI-Router
    angular-translate
    directive例子1
    FileInputStream/FileOutputStream的应用
    自定义readLine
  • 原文地址:https://www.cnblogs.com/androiddream/p/4699190.html
Copyright © 2011-2022 走看看