话不多说,先上类图:
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();
}
}
设计模式的最终目的是解耦、细粒度的划分不可避免的会增加很多类,细粒度代表更多的层级结构,解耦代表相互间尽量减少影响。
网友评论