标题有点抽象 具体点比如是商品和渠道和销售逻辑的关系
比如 一个集中管货的平台,一个商品可以在淘宝卖,也可以在京东卖,也可以在夕夕上卖
产品设计开始,商品+平台就是一个商品对多个渠道的关系,那么封装就是一个 ChannelAdapter 。
铺货、上货调用就是:Publish($goods, adapter = new Jingdong()): adater.publish($goods)
其他下架、上架对应的参数调整都大同小异。
突然有一天,产品说,我们商品不同类型要开始区分销售行为了,理解就是 实体商品需要物流的,要走一个物流的逻辑,虚拟商品的,要走虚拟逻辑,虚拟还分是三方充值类的还是卡密类的。卡密类的不能在夕夕上卖,三方充值的不能在淘宝上卖。
那该怎么处理这个解耦呢
根据调用猜逻辑 Publish($goods, new Jingdong(), new VirtualCard())
? 京东这个 channel 去判断传入的是 virtualgoodsinterface 还是在 publish 这里整个映射呢?
还有,比如后台管理系统要能知道这个 goods 能上到哪个渠道,这个渠道能上哪类呢?Goods.GetAvailableChannel()/ Channel.GetAvailableType() / ??