P9 策略模式

一、定义

策略模式是行为模式之一

对一系列算法做封装,为所有算法定义一个抽象的接口,并通过继承该接口实现所有算法的封装和实现,具体算法由使用方选择,该模式主要用于算法的平滑切换

二、类图

工作流程:

Executor持有策略的接口,具体实现在初始化时,由构造传入

接口实现可以有多个,例如MethodA/B/C/D...等,构造出执行机后,执行execute方法,自动执行对应的策略,因为执行机是由接口组成,因此使用了组成的uml图,组成执行机后,即可实现不同策略的执行

代码:

/**
 * 策略接口
 */
public interface IStrategy {
    /**
     * 编码类型
     */
    void enCode();
}
/**
 * 策略A
 */
public class MethodAStrategy implements IStrategy {
    @Override
    public void enCode() {
        System.out.println("编码方式1");
    }
}
/**
 * 策略B
 */
public class MethodBStrategy implements IStrategy {
    @Override
    public void enCode() {
        System.out.println("编码方式2");
    }
}
/**
 * 执行机,=上下文
 */
public class Executor {
    private IStrategy strategy;
    public Executor(IStrategy strategy) {
        this.strategy = strategy;
    }

    /**
     * 对外暴露的方法
     */
    public void execute(){
        strategy.enCode();
    }
}

测试方法

public class Main {
    public static void main(String[] args) {
        Executor context = new Executor(new MethodAStrategy());
        context.execute();
        System.out.println("***********");
        context = new Executor(new MethodBStrategy());
        context.execute();
    }
}

结果

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值