示例:FACADE—我有一個(gè)專業(yè)的Nikon相機(jī),我就喜歡自己手動(dòng)調(diào)光圈老客、快門僚饭,這樣照出來(lái)的照片才專業(yè),但MM可不懂這些胧砰,教了半天也不會(huì)鳍鸵。幸好相機(jī)有Facade設(shè)計(jì)模式,把相機(jī)調(diào)整到自動(dòng)檔尉间,只要對(duì)準(zhǔn)目標(biāo)按快門就行了偿乖,一切由相機(jī)自動(dòng)調(diào)整,這樣MM也可以用這個(gè)相機(jī)給我拍張照片了哲嘲。
門面模式:外部與一個(gè)子系統(tǒng)的通信必須通過(guò)一個(gè)統(tǒng)一的門面對(duì)象進(jìn)行贪薪。門面模式提供一個(gè)高層次的接口,使得子系統(tǒng)更易于使用眠副。每一個(gè)子系統(tǒng)只有一個(gè)門面類河绽,而且此門面類只有一個(gè)實(shí)例霜旧,也就是說(shuō)它是一個(gè)單例模式序仙。但整個(gè)系統(tǒng)可以有多個(gè)門面類谬返。
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("對(duì)焦功能");
}
}
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>
/// 自動(dòng)擋拍照 【攝像我也不懂,瞎寫的光涂,明白意思就好】
/// </summary>
public void AutoShoot()
{
m_CameraFunctionA.Flashlight();//閃光燈功能
m_CameraFunctionD.Aperture();//光圈功能
m_CameraFunctionB.Focus();//對(duì)焦功能
m_CameraFunctionC.Shutter();//快門功能
}
}