package com.cheng.zenofdesignpatterns.patterns.mediator.invoicing;
/**
* 具体中介者
*/
public class InvoicingMediator extends AbstractMediator {
// 中介者最重要的方法
@Override
public void execute(String str, Object... objects) {
if (str.equals("purchase.buy")) { //采购电脑
this.buyComputer((Integer)objects[0]);
} else if (str.equals("sale.sell")) { //销售电脑
this.sellComputer((Integer)objects[0]);
} else if (str.equals("sale.offsell")) { //折价销售
this.offSell();
} else if (str.equals("stock.clear")) { //清仓处理
this.clearStock();
}
}
// 采购电脑
private void buyComputer(int number) {
int saleStatus = super.sale.getSaleStatus();
if (saleStatus > 80) { // 销售情况良好
System.out.println("采购IBM电脑:" + number + "台");
super.stock.increase(number);
} else { // 销售情况不好
int buyNumber = number / 2; // 折半采购
System.out.println("采购IBM电脑:" + number + "台");
}
}
// 销售电脑
private void sellComputer(int number) {
if (super.stock.getStockNumber() < number) { // 库存数量不够销售
super.purchase.buyIBMcomputer(number);
}
super.stock.decrease(number);
}
// 折价销售电脑
private void offSell() {
System.out.println("折价销售IBM电脑"+stock.getStockNumber()+"台");
}
// 清仓处理
private void clearStock() {
// 要求清仓销售
super.sale.offSale();
// 要求采购人员不要采购
super.purchase.refuseBuyIBM();
}
}