Facade 门面模式,也叫外观模式。为子系统中的一组接口提供一个一致的界面,定义一个高层接口,这个接口使得这一子系统更加容易使用
为什么需要外观模式
- 开发阶段,子系统越来越复杂,增加外观模式提供一个简单的调用接口。
- 维护一个大型遗留系统的时候,可能这个系统已经非常难以维护和扩展,但又包含非常重要的功能,为其开发一个外观类,以便新系统与其交互。
- 外观模式可以隐藏来自调用对象的复杂性。
举这样一个例子:比如神庙逃亡、地铁跑酷这种游戏,选择角色,从开始到死亡游戏结束。
先定义好游戏角色接口,和游戏接口
1 | interface CharacterInterface |
1 | interface GameInterface |
然后是玩家感知到的一个操作门面:
1 | class Facade |
具体的游戏类和角色类的实现就省略了
假装我们已经有了地铁跑酷类 SubwaySurfers 和琪琪(角色)类 Tricky,只需要下面的代码就可以实现我们想要的功能了:
1 | $game = new SubwaySurfers(); |