设计模式---外观模式(门面模式)(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();//快门功能
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值