当前位置:主页 > 查看内容

给女朋友讲设计模式 之 外观模式

发布时间:2021-07-13 00:00| 位朋友查看

简介:外观模式 我刚洗完澡,头发还湿哒哒的,随便在浴室拿了一块毛巾擦了擦头发就把毛巾放在肩上,继续我这个独立游戏的开发,不一会儿,她就进来了,她是最不喜欢我把湿毛巾搭在肩上的,她说会有味道,于是就把我的毛巾拿走了,扔在洗衣机里面,然后站在我身后,问我:现在你……

外观模式

我刚洗完澡,头发还湿哒哒的,随便在浴室拿了一块毛巾擦了擦头发就把毛巾放在肩上,继续我这个独立游戏开发,不一会儿,她就进来了,她是最不喜欢我把湿毛巾搭在肩上的,她说会有味道,于是就把我的毛巾拿走了,扔在洗衣机里面,然后站在我身后,问我:"现在你在干嘛啊"

我说:"我在重构一下代码,之前的代码调用有些混乱,这次想着用严格的外观模式进行重构".

"哦"她回答,她接着又问:"什么是外观模式啊."

我看了看她,她也看了看我,我给他拖了一把椅子过来,让她坐下来.

我说外观模式就是一个类似于"中间件"的做法,就好像有一辆汽车,它的内部有着多个十分复杂的系统,比如有动力系统,动力系统还分燃油动力和电动,但是用户不用知道这些动力的提供方式,用户只需要用钥匙开启车辆,挂上档,踩下油门,汽车就可以前进,里面还有复杂的空气循环系统,制冷,制热,内循环,外循环等,但是用户操作这些复杂的系统的时候,就是按下按钮,即可操作这些复杂的系统,而把这个思想放到游戏开发中来,同样的,游戏中会有许多模块,比如登陆模块,事件模块,关卡模块,同步模块,成就模块,等等等等,我本来想的就是将这些模块按需调用,但是发现耦合太高了,逻辑很混乱.

"什么是耦合啊?"她问.

"耦合就是一个脚本与另一个脚本之间的通讯情况,如果一个脚本对于另一个脚本的依赖比较大,那么就可以说它们之间的耦合程度高".

"哦,你现在就是各个功能块之间是直接通讯的,所以功能一多,里面的通讯就变得难以管理了"

我吃惊的看了看她,"我说你现在可越来越聪明了."

她微微一笑,说:"是呀,我其实是很聪明的"

"我说,那我考你一下,你觉得我这个外观模式该怎么设计呢?"

她吐了吐舌

"哈哈,"我柔声说道:"我们得把一些系统的类中一些初始化的方法,单独拎出来."

public class EventSys
{
    public void Init()
    {
        Debug.Log("事件系统初始化");
    }

    public void Update()
    {

    }

}
public class LevelSys
{
    public void Init()
    {
        Debug.Log("训练系统初始化");
    }

   public void Update()
    {

    }

}

"为什么这些方法之前都带有了public呀."她问.

我说:"这是方法的修饰,public代表的是公开的,就是某个类或者方法拿到了这个类的引用,就能使用这个方法."

"那什么是修饰啊?"

"修饰就相当于这个方法的标签,通过标签来确定这个方法的属性,就像这个public,它就可以被其他类中的方法调用."

"哦"

接下来我们就开始在一个外观类中进行实例化并统一初始化.

public class Facade :MonoBehaviour
{
    EventSys eventSys = null;
    LevelSys levelSys = null;

    public void Init()
    {
        eventSys = new EventSys();
        eventSys.Init();
        levelSys = new LevelSys();
        levelSys.Init();
    }

}

"这样做完了之后这个Facade 就相当于管理者了吧?想用什么直接问它,他去找相对应得方法"

"是这样的,具体是这么来让它"找"方法的"

public class UseFacade : Facade  {

    private void Start()
    {
        Init();
    }
    private void Update()
    {
        Debug.Log("");
    }
}

"嗯嗯,这个倒是蛮简单的,但是还是不好玩."

她嘟了嘟嘴,说完起身走到浴室把毛巾仍在浴室的盆里.我呵呵一笑.她哪知道这其间的乐趣啊.".

…END…


本站部分内容转载于网络,版权归原作者所有,转载之目的在于传播更多优秀技术内容,如有侵权请联系QQ/微信:153890879删除,谢谢!

推荐图文

  • 周排行
  • 月排行
  • 总排行

随机推荐