Java设计模式之策略设计模式

在软件开发中也常常遇到类似的情况,实现某一个功能有多种算法或者策略,我们可以根据环境或者条件的不同选择不同的算法或者策略来完成该功能。

  策略模式:定义一系列的算法,把每一个算法封装起来, 并且使它们可相互替换。本模式使得算法可独立于使用它的客户而变化。也称为政策模式(Policy)。
package com.livvy.shejimoshi;

import java.util.Arrays;

interface Processor {
    String name();

    Object process(Object input);
}
/*
 * 客户端实例  第一个参数为接口  其实可以直接把接口当做一个参数类型(类似 object 只不过没有那么顶级)来处理
 */
class Apply {
    public static void process(Processor p, Object s) {
        System.out.println("Using processor  " + p.name());
        System.out.println(p.process(s));
    }
}

/*
 * 策略一 继承抽象类 实现策略方法
 */
class Upcase extends _03Strategy {

    @Override
    public String process(Object input) {
        return ((String) input).toUpperCase();
    }

}
/*
 * 策略二 继承抽象类 实现策略方法
 */

class Downcase extends _03Strategy {

    @Override
    public String process(Object input) {
        return ((String) input).toLowerCase();
    }

}
/*
 * 策略三 继承抽象类 实现策略方法
 */

class Splitter extends _03Strategy {

    @Override
    public String process(Object input) {
        return Arrays.toString(((String) input).split(" "));
    }

}

/*
 * 实现了接口的抽象方法 实现了接口中的第一个方法  第二个方法抽出来成了抽象方法作为算法
 * 
 */
public abstract class _03Strategy implements Processor {

    @Override
    public String name() {

        return getClass().getSimpleName();
    }

    public abstract String process(Object input);

    public static String s = "i love you i hope you do so";

    public static void main(String[] args) {
        Apply.process(new Upcase(), s);
        Apply.process(new Downcase(), s);
        Apply.process(new Splitter(), s);

    }

}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值