设计模式-外观模式

外观模式

外观模式是一个很简单,很常用的一种模式。
它其实就是一个高级接口,包含了许多子系统的初始化以及功能,它与用户直接交互,用户不再与众多子系统具有很高的耦合度,用户不必知道子系统的初始化以及调用的过程,只要在接口处调用函数即可。
就像是汽车,它的内部有燃油系统,动力系统,方向系统,音乐等众多系统,司机并不需要知道这些系统的具体工作原理,他只需控制方向盘,挡位,观察仪表盘,就能控制汽车,获取汽车的状态。
在上一篇状态模式中的GameState类,若我们在此类中初始化、调用和释放游戏子系统,首先我们破坏了类的单一职责原则,该类的功能就是战斗状态的切换,加了其它功能,会使得这个类变得臃肿,难以维护,也降低了可重用性。
在这里插入图片描述

public class GameScene{
	...
	private HeroSystem = null;
	private EnemySyatem = null;
	private BattleSystem = null;
	private MoneySystem = null;
	...
	void Init(){
		HeroSystem = new HeroSystem();
		EnemySystem = new EnemySystem();
		...
		HeroSystem.Init();
		EnemySystem.Init();
		}
	void Update(){
		HeroSystem.Update();
		EnemySystem.Update();
		...
		}
	void Release(){
		HeroSystem.release();
		EnemySystem.release();
		...
		}
		...
	}

很显然,外观模式可以让用户体验更好,提供接口与界面给用户,实现了高内聚,低耦合的原则,同时也符合开闭原则,我们只需在高级接口类中增加代码即可。另外,还提高了代码的安全性,状态类的初始化失败可能会导致游戏系统宕机或初始化失败。

当然,外观模式也有自己的缺点,过多的功能放置于同一个接口中,会使类过于臃肿,代码庞大难以维护,我们可以采用重构接口类的方法,将相似功能分类,提高类的重用性。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值