我是靠谱客的博主 腼腆保温杯,最近开发中收集的这篇文章主要介绍Unity3d之设计模式(四)外观模式 外观模式,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

外观模式

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

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

介绍

意图:为子系统中的一组接口提供一个一致的界面,外观模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。

主要解决:降低访问复杂系统的内部子系统时的复杂度,简化客户端与之的接口。

何时使用: 1、客户端不需要知道系统内部的复杂联系,整个系统只需提供一个"接待员"即可。 2、定义系统的入口。

如何解决:客户端不与系统耦合,外观类与系统耦合


解释:简单来说,客户端需要调用一个特别复杂的子系统中的多个接口,如果直接调用逻辑处理起来会非常复杂,而且不便于系统扩展。外观模式把这个复杂的子系统统一起来,提供几个高层接口,以备客户端进行调用。通俗来说是:子系统是一个黑匣子,提供若干个透明接口以备调用

 

UML类图



基本代码:

using UnityEngine;

public class TestFacade : MonoBehaviour {

	void Start () {

        //外观模式打开电器
        Facade face = new Facade();
        face.TurnOnAll();
        face.TurnOffAll();

        //非外观模式打开电器
        HomeLight light = new HomeLight();
        AirCondition airCondition = new AirCondition();
        AirFan airFan = new AirFan();

        //打开电器
        light.TurnOn();
        airCondition.TurnOn();
        airFan.TurnOn();

        //关闭电器
        light.TurnOff();
        airCondition.TurnOff();
        airFan.TurnOff();
    }
}

//外观类(门面类)
class Facade
{
    HomeLight light;
    AirCondition airCondition;
    AirFan airFan;

    public Facade()
    {
        light = new HomeLight();
        airCondition = new AirCondition();
        airFan = new AirFan();
    }

    //外观方法A
    public void TurnOnAll()
    {
        light.TurnOn();
        airCondition.TurnOn();
        airFan.TurnOn();
    }
    //外观方法B
    public void TurnOffAll()
    {
        light.TurnOff();
        airCondition.TurnOff();
        airFan.TurnOff();
    }
}

//电灯
class HomeLight
{
    public void TurnOn()
    {
        Debug.Log("开灯");
    }
    public void TurnOff()
    {
        Debug.Log("关灯");
    }
}

//空调
class AirCondition
{
    public void TurnOn()
    {
        Debug.Log("开空调");
    }
    public void TurnOff()
    {
        Debug.Log("关空调");
    }
}

//电扇
class AirFan
{
    public void TurnOn()
    {
        Debug.Log("开电扇");
    }
    public void TurnOff()
    {
        Debug.Log("关电扇");
    }
}


优缺点:

优点:

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

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

缺点:

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


使用场景:

1)为一个复杂的子系统提供一个简单的接口。

2)在层次化结构中,可以使用外观模式定义系统中每一层的入口。

3)子系统需要独立性。



参考:http://www.cnblogs.com/wangjq/archive/2012/07/10/2583672.html

参考:http://www.runoob.com/design-pattern/design-pattern-tutorial.html

最后

以上就是腼腆保温杯为你收集整理的Unity3d之设计模式(四)外观模式 外观模式的全部内容,希望文章能够帮你解决Unity3d之设计模式(四)外观模式 外观模式所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(39)

评论列表共有 0 条评论

立即
投稿
返回
顶部