using System;
using System.Collections ;
namespace Pattern
{
/// <summary>
/// Summary description for Class1.
/// </summary>
/*這個模式的定義就很簡單用一箇中介對象來封裝一系列的對象交互。中介者
使各對象不需要顯式地相互引用,從而使其耦合鬆散,而且可以獨立地改變
它們之間的交互。好處是什麼呢?很顯然就是爲了降低複雜度.使的原本使多
對多關係.現在變成了1對多關係.因爲所有對象都只和Mediator中介者單線聯
系.而中介者隱士的包含了對象之間的關係.下面還是舉個簡單的事例.如:小王
要把稿件交給小李.小李要把書籍交給小張.小張要把筆交給小王.並且小張要
把隨身聽交給小李.這樣如果對象和對象之間交互會顯得很複雜.如果他們只
是把物品交給一箇中介人.在由中介人負責派分物品.這樣每個人都只和中介人
建立聯繫.而中介人維護對象之間的關係.*/
//還是從接口開始
public interface IPerson
{
string Name{get;}
ArrayList Article {get;set;}//每個人可能有多個物品
}
public class Wang : IPerson
{
private string name="Wang";
private ArrayList article;
public string Name
{
get{return name;}
}
public ArrayList Article
{
get{return article;}
set{article=value;}
}
//.......做其他的事情
}
public class Zhang : IPerson
{
private string name="Zhang";
private ArrayList article;
public string Name
{
get{return name;}
}
public ArrayList Article
{
get{return article;}
set{article=value;}
}
//.......做其他的事情
}
public class Lee:IPerson
{
private string name="Lee";
private ArrayList article;
public string Name
{
get{return name;}
}
public ArrayList Article
{
get{return article;}
set{article=value;}
}
//.......做其他的事情
}
//中介人
public interface IMediator
{
//交換物品
void SweapArticle(IPerson p1,IPerson p2,object at);
}
public class ConcreteMediator : IMediator
{
public void SweapArticle(IPerson p1,IPerson p2,object at)
{
p1.Article.Add(at);
p2.Article.Remove(at);
}
}
}
//中介者模式
// IMediator m = new ConcreteMediator();
// IPerson wang=new Wang();
// IPerson zhang=new Zhang();
// IPerson lee=new Lee();
//
// wang.Article.Add("稿件");
// zhang.Article.Add("書籍");
// lee.Article.Add("筆");
// lee.Article.Add("隨身聽");
//
// //交換開始
// m.SweapArticle(wang,zhang,"稿件");
// m.SweapArticle(zhang,lee,"書籍");
// m.SweapArticle(lee,zhang,"筆");
// m.SweapArticle(lee,wang,"隨身聽");