博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
C# 外观模式
阅读量:6980 次
发布时间:2019-06-27

本文共 1656 字,大约阅读时间需要 5 分钟。

 外观模式(Facade Pattern)

介绍

定义:  为子系统中的一组接口提供一个一致的界面,此模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。使用外观模式时,创建了一个统一的类,用来包装子类系统中一个或多个复杂的类,客户端可以通过外观类来调用内部子系统中方法,从而外观模式让客户和子系统之间避免了紧耦合。

优点: 1、减少系统相互依赖。 2、提高灵活性。 3、提高了安全性。

缺点:不符合开闭原则,如果要改东西很麻烦,继承重写都不合适。

何时使用: 1、客户端不需要知道系统内部的复杂联系,整个系统只需提供一个"接待员"即可。 2、定义系统的入口。

 

实现

例如一个学校校长, 要求了解一个班级学生的纪律信息和学习信息,我们可以规定

班长------>整理班级纪律信息

团支书------>整理班级学习信息

班长和团支书将各自信息传递给老师,

老师将全部信息------->校长

 操作如图

 代码如下:

using System.Collections;using System.Collections.Generic;using UnityEngine;public class FacadeTest : MonoBehaviour {    // Use this for initialization    void Start () {        HeadMaster headMaster = new HeadMaster();        headMaster.OrderTeacherDoSummary();    }    // Update is called once per frame    void Update () {     }}/// /// 校长类/// public class HeadMaster{    private Teacher teacher;    public HeadMaster()    {        teacher = new Teacher();    }    public void OrderTeacherDoSummary()    {        teacher.SubmitStudentInfomation();    }}/// /// 老师类/// public class Teacher{    private Monitor monitor;    private LeagueSecretary leagueSecretary;    public Teacher()    {        monitor = new Monitor();        leagueSecretary = new LeagueSecretary();    }    public void SubmitStudentInfomation()    {        monitor.CollectStudentRuleInfomation();        leagueSecretary.CollectStudentStudyInfomation();    }}/// /// 班长类/// public class Monitor{    public void CollectStudentRuleInfomation()    {        Debug.Log("班长统计班里纪律信息:整理材料");    }}/// /// 团支书类/// public class LeagueSecretary{    public void CollectStudentStudyInfomation()    {        Debug.Log("团支书统计班里学习信息:整理材料");    }}

 

转载于:https://www.cnblogs.com/lk95/p/9991236.html

你可能感兴趣的文章
Poj1426
查看>>
web类协议脚本-飞机订票系统示例
查看>>
使用Bot Service创建Bot Framework
查看>>
[JZOJ4786]小a的强迫症
查看>>
转:浅谈Linux的内存管理机制
查看>>
boolean
查看>>
ピエタ~幸せの青い鳥~相关
查看>>
Eclipse for Tricore 的安装方法
查看>>
IE下javascript的console方法
查看>>
机器学习 LR getA()
查看>>
java如何读写json文件
查看>>
py 的 第 31 天
查看>>
文件上传至阿里云
查看>>
HDU 1711 Number Sequence (KMP 入门)
查看>>
Win2008远程多用户登陆的配置方法
查看>>
Oracle回收站
查看>>
JavaSript模块化 && AMD CMD 详解.....
查看>>
react构建淘票票webapp,及react与vue的简单比较。
查看>>
swift(一)基础变量类型
查看>>
使用XHProf分析PHP性能瓶颈(二)
查看>>