public class Mediator
{
public virtual void GetHouseInfo(Customer customer, string house)
{
}
public virtual void GetBuyerExpectedInfo(Customer customer, string house)
{
}
public virtual bool FindMatch(out Customer buyer, out Customer seller) { buyer = null; seller = null; return false; }
public virtual void SellerBuyerMeet(Customer buyer, Customer seller) { }
public virtual void ProcessDeal(Customer buyer, Customer Seller) { }
}
public class Customer
{
protected string _name;
protected string _phone;
protected Mediator _mediator;
public Customer(string name, string phone, Mediator mediator)
{
_name = name;
_mediator = mediator;
}
public string GetName() { return _name; }
public string GetPhone() { return _phone; }
public Mediator GetMediator() { return _mediator; }
public virtual void Call() { }
}
public class Buyer : Customer
{
protected string _requirement;
public override void Call()
{
_mediator.GetBuyerExpectedInfo(this, _requirement);
}
}
public class Seller : Customer
{
protected string _houseInfo;
public override void Call()
{
_mediator.GetHouseInfo(this, _houseInfo);
}
}
public class LianJia : Mediator
{
private Dictionary<string, Customer> _buyers = new Dictionary<string, Customer>();
private Dictionary<string, Customer> _seller = new Dictionary<string, Customer>();
public override void GetBuyerExpectedInfo(Customer customer, string house)
{
_buyers.Add(house, customer);
}
public override void GetHouseInfo(Customer customer, string house)
{
_seller.Add(house, customer);
}
public override bool FindMatch(out Customer buyer, out Customer seller)
{
bool found = false;
buyer = null;
seller = null;
foreach (string house in _seller.Keys)
{
if (_buyers.ContainsKey(house))
{
buyer = _buyers[house];
seller = _seller[house];
found = true;
break;
}
}
return found;
}
public override void SellerBuyerMeet(Customer buyer, Customer seller)
{
string name = buyer.GetName();
string nameSeller = seller.GetName();
// ~~~~
}
public override void ProcessDeal(Customer buyer, Customer Seller)
{
// ~~~~
}
}