大话设计模式之策略模式笔记

发布时间 2023-10-20 18:06:39作者: 啄木鸟伍迪

策略模式结构

classDiagram class Context{ -Statage statage +ContextIntegace(Statage statage) } class Stratage{ <<abstract>> + algorithmInterface() } class ConcreateStratage1{ } class ConcreateStratage2{ } Context o-- Stratage ConcreateStratage1 --|>Stratage ConcreateStratage2 --|>Stratage

以实现加、减、乘、除的计算器功能为例

分析:加、减、乘、除都是一种策略

classDiagram class StratageContext{ -OperatrionStratage statage +ContextIntegace(Statage statage) } class OperatrionStratage{ <<abstract>> + contextInterface() } class ConcreateStratageAdd{ } class ConcreateStratageSub{ } StratageContext o-- OperatrionStratage ConcreateStratageAdd --|>OperatrionStratage ConcreateStratageSub --|>OperatrionStratage

Context 上下文

public class StratageContext {
    private OperationStratage stratage;

    public OperationStratage getStratage() {
        return stratage;
    }

    public void setStratage(OperationStratage stratage) {
        this.stratage = stratage;
    }

    public StratageContext() {
        super();
    }

    public StratageContext(OperationStratage stratage) {
        super();
        this.stratage = stratage;
    }

    public double contextInterface(double numA, double numB) {
        return stratage.algMethod(numA, numB);
    }
}

策略

public abstract class OperationStratage {

    public abstract double algMethod(double numA, double numB);

}


public class ConcreateStratageAdd extends OperationStratage {

    @Override
    public double algMethod(double numA, double numB) {
        return numA + numB;
    }

}

public class ConcreateStratageSub extends OperationStratage {

    @Override
    public double algMethod(double numA, double numB) {
        return numA - numB;
    }

}