示例:FACADE—我有一個專業(yè)的Nikon相機,我就喜歡自己手動調(diào)光圈、快門,這樣照出來的照片才專業(yè),但MM可不懂這些,教了半天也不會。幸好相機有Facade設計模式,把相機調(diào)整到自動檔,只要對準目標按快門就行了,一切由相機自動調(diào)整,這樣MM也可以用這個相機給我拍張照片了。
門面模式:外部與一個子系統(tǒng)的通信必須通過一個統(tǒng)一的門面對象進行。門面模式提供一個高層次的接口,使得子系統(tǒng)更易于使用。每一個子系統(tǒng)只有一個門面類,而且此門面類只有一個實例,也就是說它是一個單例模式。但整個系統(tǒng)可以有多個門面類。
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();//快門功能
}
}