首页 > 编程语言 > 详细

Unity---游戏设计模式(2)之外观模式

时间:2019-10-12 23:34:09      阅读:162      评论:0      收藏:0      [点我收藏+]



概述参考请看 参考博客

外观模式通过引入一个外观角色来简化客户端与子系统之间的交互,为复杂的子系统调用提供一个统一的入口,降低子系统与客户端的耦合度,且客户端调用非常方便。

1、外观模式原型

外观模式原型的UML图
技术分享图片

外观模式代码

public class SubSystem1
{
    public void Method1()
    {
        //业务系统代码
    }
}
public class SubSystem2
{
    public void Method2()
    {
        //业务系统代码
    }
}
public class SubSystem3
{
    public void Method3()
    {
        //业务系统代码
    }
}

/// <summary>
/// 外观模式原型代码
/// </summary>
public class FacadeMode
{
    public SubSystem1 system1 = new SubSystem1();
    public SubSystem2 system2 = new SubSystem2();
    public SubSystem3 system3 = new SubSystem3();

    public void Work()
    {
        system1.Method1();
        system2.Method2();
        system3.Method3();
    }
}

public class Client:MonoBehaviour
{
    public FacadeMode mFacadeMode;

    private void Start()
    {
        mFacadeMode.Work();
    }
}

2、外观模式实例

外观模式实例的UML图
和上面基本一样

外观模式实例代码

GameFacade类


/// <summary>
/// 外观模式: 存储所有的游戏系统,当作通信的间接类。
/// 单例模式: 和外观模式一起用,更方便通信
/// </summary>
public class GameFacade
{
    #region
    private static GameFacade _Instance = new GameFacade();
    public static GameFacade Instance { get { return _Instance; } }
    #endregion

    private AchievementSystem mAchievementSystem;
    private CharacterSystem mCharacterSystem;
    private GameEventSystem mGameEventSystem;
    private UISystem mUISystem;

    //把系统的初始化等代码放在GameFacade中
    //再用状态模式,在这个场景类中调用这几个方法。就能实现初始化、更新、释放功能。
    public void Init()
    {
        mAchievementSystem.Init();
        mCharacterSystem.Init();
        mGameEventSystem.Init();
        mUISystem.Init();
    }
    public void Update()
    {
        mAchievementSystem.Update();
        mCharacterSystem.Update();
        mGameEventSystem.Update();
        mUISystem.Update();
    }
    public void Release()
    {
        mAchievementSystem.Release();
        mCharacterSystem.Release();
        mGameEventSystem.Release();
        mUISystem.Release();
    }

    public void Method1()
    {
        //实现方法,调用某个游戏系统
    }
}

当某个对象需要调用某个系统时,可以在GameFacade中添加方法。然后对象再根据单例模式调用这个方法。把GameFacade当作中间外观类,就可以大幅度降低系统之间的耦合性。

Unity---游戏设计模式(2)之外观模式

原文:https://www.cnblogs.com/Fflyqaq/p/11576518.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!