V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
dzdh
V2EX  ›  编程

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

  •  
  •   dzdh · 2023-09-11 18:20:01 +08:00 · 580 次点击
    这是一个创建于 445 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

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

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

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

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

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

    那该怎么处理这个解耦呢

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

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

    目前尚无回复
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2808 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 07:47 · PVG 15:47 · LAX 23:47 · JFK 02:47
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.