unity外观模式

tech2023-08-18  100

外观模式

外观模式(Facade Pattern)隐藏系统的复杂性,并向客户端提供了一个客户端可以访问系统的接口。这种类型的设计模式属于结构型模式,它向现有的系统添加一个接口,来隐藏系统的复杂性。

这种模式涉及到一个单一的类,该类提供了客户端请求的简化方法和对现有系统类方法的委托调用

优缺点

优点: 1)外观模式对客户端屏蔽了子系统组件,从而简化了接口,减少了客户端处理的对象数目并使子系统的使用更加简单。

2)外观模式实现了子系统与客户之间的松耦合关系,而子系统内部的功能组件是紧耦合的。松耦合使得子系统的组件变化不会影响到它的客户端。

缺点:

增加新的子系统可能需要修改外观类或客户端,违背了“开闭原则”。

然后给大家看下简单的外观模式的代码

public class TestReflect : MonoBehaviour { private void Start() { //外观模式控制怪物的行为 Facade facade = new Facade(); facade.AllRun(); facade.AllAttack(); facade.AllDie(); //非外观模式控制怪物行为 Monster1 mon1 = new Monster1(); mon1.Run(); mon1.Attack(); mon1.Die(); } class Monster1 { public void Attack() { Debug.Log("怪物1攻击"); } public void Die() { Debug.Log("怪物1死亡"); } public void Run() { Debug.Log("怪物1奔跑"); } } class Monster2 { public void Attack() { Debug.Log("怪物2攻击"); } public void Die() { Debug.Log("怪物2死亡"); } public void Run() { Debug.Log("怪物2奔跑"); } } class Monster3 { public void Attack() { Debug.Log("怪物3攻击"); } public void Die() { Debug.Log("怪物3死亡"); } public void Run() { Debug.Log("怪物3奔跑"); } } /// <summary> /// 外观类 /// </summary> class Facade { Monster1 monster1; Monster2 monster2; Monster3 monster3; /// <summary> /// 构造方法 /// </summary> public Facade() { monster1 = new Monster1(); monster2 = new Monster2(); monster3 = new Monster3(); } public void AllDie()//集体死亡 { monster1.Die(); monster2.Die(); monster3.Die(); } public void AllAttack()//集体攻击 { monster1.Attack (); monster2.Attack(); monster3.Attack(); } public void AllRun()//集体奔跑 { monster1.Run (); monster2.Run(); monster3.Run(); } } }
最新回复(0)