设计模式---外观模式(门面模式)(DesignPattern_Facade)

示例:FACADE—我有一个专业的Nikon相机,我就喜欢自己手动调光圈、快门,这样照出来的照片才专业,但MM可不懂这些,教了半天也不会。幸好相机有Facade设计模式,把相机调整到自动档,只要对准目标按快门就行了,一切由相机自动调整,这样MM也可以用这个相机给我拍张照片了。

门面模式:外部与一个子系统的通信必须通过一个统一的门面对象进行。门面模式提供一个高层次的接口,使得子系统更易于使用。每一个子系统只有一个门面类,而且此门面类只有一个实例,也就是说它是一个单例模式。但整个系统可以有多个门面类。
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class CameraFunctionA
{
    public void Flashlight()
    {
        Debug.Log("闪光灯功能");
    }
}

public class CameraFunctionB
{
    public void Focus()
    {
        Debug.Log("对焦功能");
    }
}

public class CameraFunctionC
{
    public void Shutter()
    {
        Debug.Log("快门功能");
    }
}

public class CameraFunctionD
{
    public void Aperture()
    {
        Debug.Log("光圈功能");
    }
}


using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class FacadeTest : MonoBehaviour
{

    CameraFunctionA m_CameraFunctionA;
    CameraFunctionB m_CameraFunctionB;
    CameraFunctionC m_CameraFunctionC;
    CameraFunctionD m_CameraFunctionD;
    void Start()
    {
        m_CameraFunctionA = new CameraFunctionA();
        m_CameraFunctionB = new CameraFunctionB();
        m_CameraFunctionC = new CameraFunctionC();
        m_CameraFunctionD = new CameraFunctionD();
    }

    /// <summary>
    /// 自动挡拍照   【摄像我也不懂,瞎写的,明白意思就好】
    /// </summary>
    public void AutoShoot()
    {
        m_CameraFunctionA.Flashlight();//闪光灯功能
        m_CameraFunctionD.Aperture();//光圈功能
        m_CameraFunctionB.Focus();//对焦功能
        m_CameraFunctionC.Shutter();//快门功能
    }
}
上一篇:java干货spring框架


下一篇:spring框架-认识spring框架(一)