unity3D 外观模式Facade

前言

外观模式我认为就是在某一状态场景中,使用一个类,来统一管理所有的子系统。子系统做具体实现,如果外部需要使用,获取子系统,就通过这个类来调用获取。

具体实现思路

这个类在书上被称作是PBaseDefense ,被状态场景类(如战斗状态场景)使用,

而PBaseDefense类里包含所有子系统的对象引用,所有可以使用所有子系统的公有方法的

有这些子系统就要对这些对象引用初始化,new出空间来使用,为了确定这些子系统被那个对象使用,可以传入自己的对象,这样子类就有PBaseDefense类的对象了,就可以通过PBaseDefense对象来调用其他系统的公有方法(这个公有方法是通过PBaseDefense的公有方法调用)。
如: m_GameEventSystem = new GameEventSystem(this)

因为所有子系统都需要更新
所以要写一个Update方法,对所有的子系统的Update的方法同时进行调用

公有方法,供外界使用:一般来说,它的外界就是状态场景类,状态场景类需要的是Init,Update,Release(初始化,更新,结束释放)方法

还有供内部子类系统使用的公有方法
这里的公有方法根据需求来写,因为各个子系统的对象都包含在这里了。
如果要使用某个子系统的功能,我们便可以使用在这里写一个公有方法做调用。然后在子类也写一个公有方法
做具体实现
如:

public int GetEnemyCount(){
    if(m_CharacterSystem != null)
    return m_CharacterSystem.GetEnemyCount();
    return 0;
}

这样借助了PBaseDefense类对象的公有方法,间接调用了子系统的公有方法(具体实现功能)

以后我们需要使用其他系统,就不用记住是什么系统,去什么子系统调用,而是直接用PBaseDefense类对象调用就可以了

总结

外观模式里有一个控制所有子系统对象的类,这个类有3个公有状态方法开始,保持,结束释放方法控制子系统对象的创建,保持,结束状态。
有多个实际由子系统类实现的公有方法的公有方法,做具体需要的功能,供外界(状态场景类)和内部(子系统类)使用

子系统太多需要整合,避免Facade类的系统类对象过多

在需求变化时(增加新的系统)时更改Facade接口类,在Facade接口类增加对外开发的公有方法。

猜你喜欢

转载自blog.csdn.net/liaoshengg/article/details/81296727