美文网首页
二、状态设计模式

二、状态设计模式

作者: 奔跑吧老王 | 来源:发表于2020-03-31 11:29 被阅读0次

话不多说,先上类图:

image.png

商品接口类:

public interface GoodsState {

     Integer isMarket=0;
     void marketUp(GoodsOperator goodsOperator);
     void marketDown(GoodsOperator goodsOperator);
     void toAudit(GoodsOperator goodsOperator);
     Integer getIsMarket();
}

商品抽象类:

public abstract  class AbsGoodsState  implements GoodsState{

    public static  final RuntimeException EXCEPTION =new RuntimeException("不允许的操作!!!");

    @Override
    public void marketUp(GoodsOperator goodsOperator) {
        throw  EXCEPTION;
    }

    @Override
    public void marketDown(GoodsOperator goodsOperator) {
        throw  EXCEPTION;
    }

    @Override
    public void toAudit(GoodsOperator goodsOperator) {
        throw  EXCEPTION;
    }
}

上架实现子类

public class MarketUpState extends AbsGoodsState{
    @Autowired
    private GoodsMapper goodsMapper;

    @Override
    public void marketUp(GoodsOperator goodsOperator) {
        List<String> strings = goodsOperator.getStrings();
        Integer shopId = goodsOperator.getShopId();
        goodsMapper.sellerOperatorGoodsMarketUp(strings,shopId);
    }

    @Override
    public Integer getIsMarket() {
        return 0;
    }
}

下架实现子类:

public class MarketDownState extends AbsGoodsState{

    @Override
    public Integer getIsMarket() {
        return 1;
    }
}

待审核实现子类

public class ToAuditState extends AbsGoodsState{

    @Override
    public Integer getIsMarket() {
        return 2;
    }
}

上线文类(具体操作类)

@Data
public class GoodsOperator extends AbsGoodsState{

    private GoodsState goodsState;

    private List<String> strings;

    private Integer shopId;

    @Override
    public void marketUp(GoodsOperator goodsOperator) {
        this.goodsState.marketUp(goodsOperator);
    }

    @Override
    public void marketDown(GoodsOperator goodsOperator) {
        this.goodsState.marketDown(goodsOperator);
    }

    @Override
    public void toAudit(GoodsOperator goodsOperator) {
        this.goodsState.toAudit(goodsOperator);
    }

    @Override
    public Integer getIsMarket() {
        return this.goodsState.getIsMarket();
    }
}

设计模式的最终目的是解耦、细粒度的划分不可避免的会增加很多类,细粒度代表更多的层级结构,解耦代表相互间尽量减少影响。

相关文章

  • 设计模式-状态模式

    设计模式-状态模式 设计模式 状态模式的关键是区分事物内部的状态

  • 状态模式 ~ 设计模式之二

    为啥第2个说状态模式呢,说是这两种模式在使用结构上有点相似,不过,实际上也的确是这样的,呵呵,下面细说。 1. 定...

  • 设计模式-状态设计模式

    1.定义 对于某个操作,由于其状态的不同,表现出的行为会不同(如遥控器进行音量增加的操作,在电视是开机状态下是可以...

  • 设计模式——状态模式

    设计模式——状态模式 在状态模式中,类的行为是基于它的状态改变的。这种类型的设计模式属于行为型模式。 优点: 减少...

  • 设计模式——状态模式

    前言 设计模式是指导一个程序猿以更好的姿态处理一些问题,而不再像刚学编程的我们,只会使用if-else分支语句,或...

  • 设计模式--状态模式

    基本常识:策略模式与状态模式是双胞胎,在出生时才分开。 假设公司有个糖果机,1当糖果机由糖果,投入25分钱,转动曲...

  • 设计模式——状态模式

    在阎宏博士的《JAVA与模式》一书中开头是这样描述状态(State)模式的:状态模式,又称状态对象模式(Patte...

  • 设计模式《状态模式》

    引言   上一节我们说了策略模式。这一节我们讲讲策略模式的双胞胎弟弟:状态模式,这个模式大家可能不常见,也不常用,...

  • 设计模式——状态模式

    定义 状态模式,又称状态对象模式(Pattern of Objects for States),状态模式是对象的行...

  • 设计模式 - 状态模式

    模式定义 允许一个对象在其内部状态发生改变时改变它的行为。对象看起来似乎修改了它的类。 状态模式(State Pa...

网友评论

      本文标题:二、状态设计模式

      本文链接:https://www.haomeiwen.com/subject/jruouhtx.html