策略模式

总述

它把各种不同的算法封装成对象然后使用。

类图

策略模式_第1张图片
策略模式.png

效果

具体策略1
具体策略2
具体策略3

Process finished with exit code 0

调用

package com.company;

public class Main {

    public static void main(String[] args) {
    // write your code here
        User user = new User(new Strategy1());
        user.doIt();

        user = new User(new Strategy2());
        user.doIt();

        user = new User(new Strategy3());
        user.doIt();
    }
}

使用者

package com.company;

public class User {
    StrategyInterface strategy;

    /**
     * 构造带有不同的策略对象的构造方法。
     * @param strategy
     */
    public User(StrategyInterface strategy) {
        this.strategy = strategy;
    }

    /**
     * 执行策略的方法。
     */
    public void doIt() {
        this.strategy.executeStrategy();
    }
}

策略接口

package com.company;

/**
 * 策略模式的通用类型
 */
public interface StrategyInterface {
    /**
     * 执行具体策略的接口
     */
    void executeStrategy();
}

策略1

package com.company;

public class Strategy1 implements StrategyInterface {
    @Override
    public void executeStrategy() {
        System.out.println("具体策略1");
    }
}

策略2

package com.company;

public class Strategy2 implements StrategyInterface {
    @Override
    public void executeStrategy() {
        System.out.println("具体策略2");
    }
}

策略3

package com.company;

public class Strategy3 implements StrategyInterface {
    @Override
    public void executeStrategy() {
        System.out.println("具体策略3");
    }
}

你可能感兴趣的:(策略模式)