using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace 中介着模式
{ //抽象中介者角色,用于各个同事角色之间的通信
abstract class AbstractMediator
{
protected Purchase purchase;
protected Stock stock;
protected Sale sale;
public AbstractMediator()
{
purchase = new Purchase(this);
stock = new Stock(this);
sale = new Sale(this);
}
public abstract void Execute(string str,params object[] obj);
}
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace 中介着模式
{
class Mediator:AbstractMediator
{
public override void Execute(string str,params object[] obj)
{
if (str.Equals("purchase.buy"))
{
BuyComputer((int) obj[0]);
}
else if (str.Equals("sale.sell"))
{
SellComputer((int) obj[0]);
}else if (str.Equals("sale.offsell"))
{
OffSale();
}else if (str.Equals("stock.clear"))
ClearStock();
private void BuyComputer(int number)
{
int salestate = sale.GetSaleState();
if (salestate > 80)
{
Console.WriteLine("采购IBM电脑" + number + "台");
stock.Increase(number);
}
else
{
int buyNum = number/2;
Console.WriteLine("采购IBM电脑" + buyNum + "台");
}
}
private void SellComputer(int number)
{
if (stock.GetStockComputer() < number)
purchase.buyIbmComputer(number);
stock.Decrease(number);
}
private void OffSale()
{
Console.WriteLine("折价销售电脑" + stock.GetStockComputer() + "台");
}
private void ClearStock()
{
sale.offSale();
purchase.refuseBuyIBM();
}
}
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace 中介着模式
{
abstract class AbstractColleague
{
protected AbstractMediator mediator;
public AbstractColleague(AbstractMediator _mediator)
{
mediator = _mediator;
}
}
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace 中介着模式
{
class Purchase:AbstractColleague
{
public Purchase(AbstractMediator _mediator):base(_mediator)
{
}
//采购IBM电脑
public void buyIbmComputer(int number)
{
mediator.Execute("purchase.buy", number);
}
public void refuseBuyIBM()
{
Console.WriteLine("不再采购电脑");
}
}
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace 中介着模式
{
/// <summary>
/// 库存管理
/// </summary>
class Stock:AbstractColleague
{
public Stock(AbstractMediator _mediator) : base(_mediator)
{
}
private static int COMPUTER_NUM = 100;
public void Increase(int number)
{
COMPUTER_NUM += number;
Console.WriteLine("库存为:" + COMPUTER_NUM);
}
public void Decrease(int number)
{
COMPUTER_NUM -= number;
Console.WriteLine("库存为:" + COMPUTER_NUM);
}
public int GetStockComputer()
{
return COMPUTER_NUM;
}
public void clearStock()
{
Console.WriteLine("清理库存数量为 " + COMPUTER_NUM);
mediator.Execute("stock.clear");
}
}
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace 中介着模式
{
/// <summary>
/// 销售管理
/// </summary>
class Sale:AbstractColleague
{
public Sale(AbstractMediator _mediator):base(_mediator)
{}
/// <summary>
/// 销售IBM电脑
/// </summary>
/// <param name="number"></param>
public void sellIBMcomputer(int number)
{
mediator.Execute("sale.sell", number);
Console.WriteLine("销售IBM电脑" + number + "台");
}
public int GetSaleState()
{
Random random = new Random(System.DateTime.Now.Millisecond);
int saleState = random.Next(1, 100);
Console.WriteLine("电脑的销售情况 " + saleState);
return saleState;
}
public void offSale()
{
mediator.Execute("sale.offsell");
}
}
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace 中介着模式
{
class Program
{
static void Main(string[] args)
{
AbstractMediator mediator = new Mediator();
Console.WriteLine("采购开始采购");
Purchase purchase = new Purchase(mediator);
purchase.buyIbmComputer(100);
Sale sale = new Sale(mediator);
sale.sellIBMcomputer(1);
Stock stock = new Stock(mediator);
stock.clearStock();
Console.ReadKey();
}
}
}
</p>