设计模式实战 - 中介者模式

186 阅读3分钟

0 进销存管理简介

各个公司都有相同的三个环节:采购、销售和库存

  • 比如一个软件公司,要开发软件,就需要购买开发环境,如Windows操作系统、数据库产品等,这就是采购
  • 开发完产品还要把产品推销出
  • 有产品就必然有库存,软件产品也有库存,虽然不需要占用库房空间,但也要占用光盘或硬盘,这也是库存
    就来讲讲它的原理和设计,一般的做法都是通过数据库来完成相关产品的管理


    进销存示意图

以终端销售商(以服务最终客户为目标的企业,如超市)为例,采购部门要采购IBM的电脑,它根据以下两个要素来决定采购数量。
● 销售情况
销售部门要反馈销售情况,畅销就多采购,滞销就不采购
● 库存情况
即使是畅销产品,库存都有1000台了,每天才卖出去10台,也不需再采购

销售模块是企业的赢利核心,对其他两个模块也有影响:
● 库存情况
库房有货,才能销售
● 督促采购
在特殊情况下,比如一个企业客户要一次性购买100台电脑,库存只有80台,这时需要催促采购部门赶快采购

同样库存管理也对其他两个模块有影响

  • 库房是有容积限制的,不可能无限大,所以就有了清仓处理,那就要求采购部门停止采购,同时销售部门进行打折销售

分析来看,这三个模块都有自己的行为,并且与其他模块之间的行为产生关联,类似于我们办公室的同事,大家各干各的活,但是彼此之间还是有交叉的,于是彼此之间就产生紧耦合,也就是一个团队
我们先来实现这个进销存

1 实现进销系统

简单的进销存类图

Purchase 采购管理


Purchase定义了采购电脑的标准

  • 如果销售情况比较好,大于80分,你让我采购多少我就采购多少
  • 销售情况不好,你让我采购100台,我就采购50台,对折采购

电脑采购完毕,需要放到库房中,因此要调用库存的方法,增加库存电脑数量。我们继续来看库房Stock类

Stock 库存管理

  • 库房中的货物数量肯定有增减,同时库房还有一个容量显示,达到一定的容量后就要求对一些商品进行折价处理,以腾出更多的空间容纳新产品。于是就有了clearStock方法
  • 既然是清仓处理肯定就要折价销售了。于是在Sale类中就有了offSale方法

我们来看Sale源代码