using System.Collections;
using System.Collections.Generic;
using UnityEngine;
namespace Mediator
{
/// <summary>
/// 中介者模式:让GameCenter类对象充当游戏内各系统之间沟通的桥梁或接口,从而降低子系统之间的耦合度
/// </summary>
public class GameCenter
{
/// <summary>
/// 游戏系统
/// </summary>
private GameEventSystem gameEventSystem = null;
private CampSystem campSystem = null;
private StageSystem stageSystem = null;
private AchievementSystem achievementSystem = null;
/// <summary>
/// 游戏界面
/// </summary>
private GameStateInfoUI gameStateInfoUI = null;
/// <summary>
/// 游戏中各个子系统的初始化
/// </summary>
public void Init()
{
gameEventSystem = new GameEventSystem(this);
campSystem = new CampSystem(this);
stageSystem = new StageSystem(this);
achievementSystem = new AchievementSystem(this);
gameStateInfoUI = new GameStateInfoUI(this);
}
/// <summary>
/// 刷新显示游戏状态信息UI【封装好,给其他系统或界面调用】
/// </summary>
public void ShowGameStateInfo()
{
if (gameStateInfoUI != null)
gameStateInfoUI.Show();
}
}
/// <summary>
/// UI界面基类
/// </summary>
public abstract class IUserInterface
{
protected GameCenter GameCenter = null;
public IUserInterface(GameCenter gameCenter)
{
GameCenter = gameCenter;
}
public virtual void Show() { }
public virtual void Hide() { }
public virtual void Init() { }
public virtual void Release() { }
public virtual void Update() { }
}
/// <summary>
/// 游戏状态信息界面
/// </summary>
public class GameStateInfoUI : IUserInterface
{
public GameStateInfoUI(GameCenter gameCenter) : base(gameCenter)
{
}
}
/// <summary>
/// 游戏系统的基类
/// </summary>
public abstract class IGameSystem
{
protected GameCenter GameCenter = null;
public IGameSystem(GameCenter gameCenter)
{
GameCenter = gameCenter;
}
public virtual void Init() { }
public virtual void Release() { }
public virtual void Update() { }
}
public class GameEventSystem : IGameSystem
{
public GameEventSystem(GameCenter gameCenter) : base(gameCenter)
{
}
}
public class CampSystem :IGameSystem
{
public CampSystem(GameCenter gameCenter) : base(gameCenter)
{
}
}
public class StageSystem:IGameSystem
{
public StageSystem(GameCenter gameCenter) : base(gameCenter)
{
}
}
public class AchievementSystem:IGameSystem
{
public AchievementSystem(GameCenter gameCenter) : base(gameCenter)
{
}
}
}
游戏设计模式-中介者模式
最新推荐文章于 2024-07-17 16:55:47 发布