0
点赞
收藏
分享

微信扫一扫

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

策略模式结构

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;
    }

}

举报

相关推荐

0 条评论