dzdh
V2EX  ›  编程

对于交叉甚至多层交叉的场景怎么进行封装

  •  
  •   dzdh · Sep 11, 2023 · 1048 views
    This topic created in 973 days ago, the information mentioned may be changed or developed.

    标题有点抽象 具体点比如是商品和渠道和销售逻辑的关系

    比如 一个集中管货的平台,一个商品可以在淘宝卖,也可以在京东卖,也可以在夕夕上卖

    产品设计开始,商品+平台就是一个商品对多个渠道的关系,那么封装就是一个 ChannelAdapter 。

    铺货、上货调用就是:Publish($goods, adapter = new Jingdong()): adater.publish($goods)

    其他下架、上架对应的参数调整都大同小异。

    突然有一天,产品说,我们商品不同类型要开始区分销售行为了,理解就是 实体商品需要物流的,要走一个物流的逻辑,虚拟商品的,要走虚拟逻辑,虚拟还分是三方充值类的还是卡密类的。卡密类的不能在夕夕上卖,三方充值的不能在淘宝上卖。

    那该怎么处理这个解耦呢

    根据调用猜逻辑 Publish($goods, new Jingdong(), new VirtualCard()) ? 京东这个 channel 去判断传入的是 virtualgoodsinterface 还是在 publish 这里整个映射呢?

    还有,比如后台管理系统要能知道这个 goods 能上到哪个渠道,这个渠道能上哪类呢?Goods.GetAvailableChannel()/ Channel.GetAvailableType() / ??

    No Comments Yet
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   1284 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 33ms · UTC 23:43 · PVG 07:43 · LAX 16:43 · JFK 19:43
    ♥ Do have faith in what you're doing.