}package mediator; /** * 这个是同事类的抽象 * @author Administrator * */ public class AbstractorColleague { protected AbstractorMediator mediator; public AbstractorColleague(AbstractorMediator _mediator){ this.mediator = _mediator; } }package mediator; //同事类的具体实现 public class Purchase extends AbstractorColleague{ public Purchase(AbstractorMediator _mediator) { super(_mediator); } //采购电脑
public void buyIBMcomputer(int number){ super.mediator.execute("buy computer", number); }
public void refuseBuyIBMcomputer(){ System.out.println("dont buy it"); }}package mediator;import java.util.Random;public class Sale extends AbstractorColleague{ public Sale(AbstractorMediator _mediator) { super(_mediator); } //销售电脑 public void sellIBMComputer(int number){ super.mediator.execute("sale.sell", number); System.out.println("销售情况 "+ number +" 台"); }
public int getSaleStatus(){ Random rand = new Random(System.currentTimeMillis()); int saleStatus = rand.nextInt(100); System.out.println("电脑的销售情况为:"+saleStatus); return saleStatus; } //折扣处理 public void offSale(){ super.mediator.execute("sale.offSell"); } }package mediator;public class Stock extends AbstractorColleague{ public Stock(AbstractorMediator _mediator) { super(_mediator); }
private static int COMPUTER_NUM = 100; //增加库存数量 public void increase(int number){ COMPUTER_NUM = COMPUTER_NUM + number; System.out.println("库存数量为:"+COMPUTER_NUM); } //减少库存数量 public void decrease(int number){ COMPUTER_NUM = COMPUTER_NUM - number; System.out.println("库存数量为:"+COMPUTER_NUM); } //获得库存数量 public int getStockNumber(){ return COMPUTER_NUM; } //库存压力大了就通知 销售人员尽快销售 public void clearStock(){ System.out.println("清理存活数量为:"+COMPUTER_NUM); super.mediator.execute("stock.clear"); } }package mediator; //模拟客户端的测试类,(可以通过这个类来仔细研究一下中介者设计模式的具体执行流程) public class Client { public static void main(String[] args) { AbstractorMediator mediator = new Mediator(); System.out.println("采购人呀U呢采购电脑 "); Purchase purchase = new Purchase(mediator); purchase.buyIBMcomputer(100);
System.out.println("销售人员销售电脑"); Sale sale = new Sale(mediator); sale.sellIBMComputer(1);