示例: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();//快门功能
}
}