0源码地址
https://github.com/ImViper/design_pattern
0 进销存管理简介
各个公司都有相同的三个环节:采购、销售和库存
- 比如一个软件公司,要开发软件,就需要购买开发环境,如Windows操作系统、数据库产品等,这就是采购
- 开发完产品还要把产品推销出
- 有产品就必然有库存,软件产品也有库存,虽然不需要占用库房空间,但也要占用光盘或硬盘,这也是库存
就来讲讲它的原理和设计,一般的做法都是通过数据库来完成相关产品的管理
以终端销售商(以服务最终客户为目标的企业,如超市)为例,采购部门要采购IBM的电脑,它根据以下两个要素来决定采购数量。
● 销售情况
销售部门要反馈销售情况,畅销就多采购,滞销就不采购
● 库存情况
即使是畅销产品,库存都有1000台了,每天才卖出去10台,也不需再采购
销售模块是企业的赢利核心,对其他两个模块也有影响:
● 库存情况
库房有货,才能销售
● 督促采购
在特殊情况下,比如一个企业客户要一次性购买100台电脑,库存只有80台,这时需要催促采购部门赶快采购
同样库存管理也对其他两个模块有影响
- 库房是有容积限制的,不可能无限大,所以就有了清仓处理,那就要求采购部门停止采购,同时销售部门进行打折销售
分析来看,这三个模块都有自己的行为,并且与其他模块之间的行为产生关联,类似于我们办公室的同事,大家各干各的活,但是彼此之间还是有交叉的,于是彼此之间就产生紧耦合,也就是一个团队
我们先来实现这个进销存
1 实现进销系统
Purchase 采购管理
Purchase
定义了采购电脑的标准
- 如果销售情况比较好,大于80分,你让我采购多少我就采购多少
- 销售情况不好,你让我采购100台,我就采购50台,对折采购
电脑采购完毕,需要放到库房中,因此要调用库存的方法,增加库存电脑数量。我们继续来看库房Stock类
Stock 库存管理
- 库房中的货物数量肯定有增减,同时库房还有一个容量显示,达到一定的容量后就要求对一些商品进行折价处理,以腾出更多的空间容纳新产品。于是就有了clearStock方法
- 既然是清仓处理肯定就要折价销售了。于是在Sale类中就有了offSale方法
我们来看Sale源代码
Sale
Sale类中的getSaleStatus是获得销售情况
记住