@coder-pig
2017-03-23T18:28:58.000000Z
字数 1264
阅读 1543
设计模式初涉
相信各位玩过LOL英雄联盟游戏的童鞋,对下面两个英雄都不会陌生吧:
分别是瑞雯和盲僧,这两个英雄都可以通过组合键的方式打出爆炸性伤害,
打出这套组合键除了需要较快的手速外,还需要记住键位顺序,对应技能:
瑞雯的光速QA:Q + 空格 + A + 鼠标左键 + Q + 空格 + A + 鼠标左键 + Q + 空格 + A + 鼠标左键
瞎子一秒七脚:Q + A + E + 九头蛇 + R + A + 闪现 + Q
注:光速QA的空格键是设置了大笑动作用来。
我们通过来演示下如何手把手打出这一波操作。
先把各种需要用到的键位都列出来:A,E,Q,R,空格,闪现,九头蛇,鼠标左键
接着顺序我们依次按下对应按钮来打出连招
输出结果
尽管打出了连招,但是,每次按连招都需要把对应的每个键都操作一遍,
非常麻烦,而且对于我这种手残玩家,基本是按不出来的,有没有办法,
把每个按键的调用集成到一个键上,不用关心具体调用顺序与内容,只要
通过这个键就可以一键完成连招呢?当然是有的,通过外观模式可以
帮我们解决这个需求,我们将按键顺序(交互)封装到外挂(外观类)中。
非常简单,就是把调用逻辑抽取到外挂类中,暴露两个方法供玩家调用:
手残党玩家只需直接调用这个脚本即可完成一键光速QA和一秒7脚:
输出结果
用法非常简单,例子也很好理解,接下来直接上定义吧。
要求一个子系统的外部与内部的通信必须通过一个统一的对象进行,
外观模式提供一个高层次的接口,使得子系统更易于使用。
(其实就是封装,用于解决类与类间的依赖关系,比如本来是:
玩家依赖于:Q,A,E,R等键位对象,现在变成只依赖与脚本对象
从而降低了类间的耦合度。)
优点:
缺点:
本节代码:
https://github.com/coder-pig/DesignPatternsExample/tree/master/10.Facade%20Pattern