1. 策略模式

1.1 定义

在策略模式(Strategy Pattern)中,一个类的行为或其算法可以在运行时更改。这种类型的设计模式属于行为型模式。

在策略模式中,我们创建表示各种策略的对象和一个行为随着策略对象改变而改变的 context 对象。策略对象改变 context 对象的执行算法。

1.2 样例

定义策略接口:

public interface Strategy {
    void doSomeThing();
}

定义策略实现类:

@Slf4j
public class WorkStrategy implements Strategy {
    @Override
    public void doSomeThing() {
        log.info("work =͟͟͞͞(๑•̀=͟͟͞͞(๑•̀д•́=͟͟͞͞(๑•̀д•́๑)=͟͟͞͞(๑•̀д•́ ٩̣ ");
    }
}

定义策略实现类:

@Slf4j
public class DanceStrategy implements Strategy{
    @Override
    public void doSomeThing() {
        log.info("dance(((っ・ω・)っ≡≡≡☆(*>U<*) ");
    }
}

创建 Context 类:

@NoArgsConstructor
@AllArgsConstructor
public class Context {

    private Strategy strategy;

    public void showTime() {
        strategy.doSomeThing();
    }
}

测试:

public class Test {
    public static void main(String[] args) {
        Context context = new Context(new DanceStrategy());
        context.showTime();
        context = new Context(new WorkStrategy());
        context.showTime();
    }
}