概述参考请看 参考博客
1、中介者模式
不使用中介者模式,各个系统之间交错调用,很复杂。
使用中介者模式,从多对多变为1对1.
中介者模式代码
/// <summary>
/// 单例模式、外观模式、中介者模式一起使用
/// </summary>
public class GameFacade
{
#region 单例模式
private static GameFacade _Instance;
public static GameFacade Instance {
get
{
if (_Instance == null)
{
_Instance = new GameFacade();
}
return _Instance;
}
}
#endregion
private AchievementSystem mAchievementSystem;
private CharacterSystem mCharacterSystem;
private GameEventSystem mGameEventSystem;
private UISystem mUISystem;
public void Init()
{
mAchievementSystem.Init();
mCharacterSystem.Init();
mGameEventSystem.Init();
mUISystem.Init();
}
//系统间互相调用时,在GameFacade中写调用方法,再使用单例模式调用这个方法就OK了。
//这样就不会出现因系统间互相调用,而搞不清楚的情况了
public void Method1()
{
mCharacterSystem.Work();
}
}
中介者模式和外观模式经常交叉使用,你中有我、我中有你。傻傻分不清楚。
2、中介者模式优缺点
优点
- 降低系统间的耦合性
- 提供系统的灵活性,使得各个系统对象独立而易于复用
缺点
- 中介者承担了较多的责任,所以当中介者被破坏后,各个系统将可能受到影响
- 添加新系统时,要修改中介者,违背开闭原则