菜鸟也疯狂之外观模式

在笔者看来,外观模式名字取起的和它本身的作用毫不搭配,对它的应用也特别简单,简单到我都不想称之为设计,从这点可以反映出设计模式实际上就是编程的人为了方便而设计的逻辑而已,只要你能想得到某种代码组织结构并且能为你解决实际项目中的问题,你的代码就是设计模式,所以,初学的朋友不要觉得很难。

好了,我们入正题,想必很多小伙伴编程时常常会在A类当中引用了一个或者多个其他类,然后在客户端通过调用A类对象中的方法来执行其他类中的方法。这么做为的是什么,无法就是为了方便的管理,看上去也清晰,各司其职,很容易就能联想到的一些设计,而这样的设计就已经靠近外观模式了,注意,是靠近哦,为什么这么说,我们先走代码,结尾再给出理由。

public class WaiG : MonoBehaviour
{// Use this for initializationvoid Start () {RegistrationFacade rf = new RegistrationFacade();rf.Bonuses();}}/// <summary>
/// 外观类
/// 客户端调用这个角色的方法。
/// 该角色知道相关的一个或多个子系统的功能和责任,
/// 该角色会将从客户端发来的请求委派带相应的子系统中去。
/// </summary>
public class RegistrationFacade
{private TechnicalDepartment technical;private FinancialDepartment financial;public RegistrationFacade(){technical = new TechnicalDepartment();financial = new FinancialDepartment();}public void Bonuses(){technical.TakeMoney(  financial.GetMoney() );}
}// 技术部门
public class TechnicalDepartment
{public void  TakeMoney(float money){Debug.Log("拿到的奖金为:" + money);}
}// 财务部门
public class FinancialDepartment
{public float GetMoney(){return 10000000f;}
}

我相信上边的代码结构很多人使用过,也相信既使用上述代码结构的同时又在客户端调用技术部门或财务部门类中的公有方法,犹如我开头所讲,如果不知道其背后的含义,这样的结构只能算是靠近外观模式,一旦客户端调用了子系统(技术部门类和财务部门类)中的方法,那这样的结构就不叫做外观模式了。

外观模式提供了一个统一的接口,为了让外部减少与子系统内多个模块的交互,使用了外观模式之后,客户端只依赖与外观类,从而将客户端与子系统的依赖解耦了,这也就是笔者为什么说若客户端直接调用子系统就不能称之为外观模式了,既然是子系统就一定是在某个大系统内部使用的系统,不能外用,否则结构就好比邋遢人的房间凌乱不堪。

菜鸟也疯狂之外观模式相关推荐

  1. 设计模式的理解 : 门面模式、外观模式 (Facade)

    门面模式又称外观模式:主要思想就是用一个提供些专门进行对外访问的接口,避免外部程序直接调用内部方法,对内部方法进行有效的屏蔽. 以医院为例 : (转自 菜鸟教程) 一个医院的系统功能有多种,如果让病人 ...

  2. 设计模式学习 — 外观模式

    外观模式定义 Facade模式也叫外观模式,是由GoF提出的23种设计模式中的一种. Facade模式为一组具有类似功能的类群,比如类库,子系统等等,提供一个一致的简单的界面.这个一致的简单的界面被称 ...

  3. Java设计模式--外观模式

    1 Facade Pattern 外观模式 目的:隐藏系统的复杂性,并对外提供了一个可以访问的接口,不必关心实现的细节: 实现:在客户端和复杂系统之间再加一层,这一层将调用顺序.依赖关系等处理好. 1 ...

  4. 12-设计模式-外观模式

    外观模式概念 以下内容摘自菜鸟教程 意图:为子系统中的一组接口提供一个一致的界面,外观模式定义了一个高层接口,这个接口使得这一子系统更加容易使用. 主要解决:降低访问复杂系统的内部子系统时的复杂度,简 ...

  5. 设计模式之外观模式php,PHP设计模式:外观模式

    前言 菜鸟教程对外观模式的描述是:外观模式(Facade Pattern)隐藏系统的复杂性,并向客户端提供了一个客户端可以访问系统的接口.这种类型的设计模式属于结构型模式,它向现有的系统添加一个接口, ...

  6. C++结构型模式-实现外观模式

    1.1 基本概念 外观模式(Facade Pattern),为子系统中的一组接口提供一个统一的入口,外部与一个子系统的通信可以通过一个统一的外观对象进行. 外观模式要求一个子系统的外部与其内部的通信通 ...

  7. 设计模式之外观模式(Facade)摘录

    23种GOF设计模式一般分为三大类:创建型模式.结构型模式.行为模式. 创建型模式抽象了实例化过程,它们帮助一个系统独立于如何创建.组合和表示它的那些对象.一个类创建型模式使用继承改变被实例化的类,而 ...

  8. 设计模式C#实现(三)——外观模式

    外观模式--提供了一个统一的接口,用来访问子系统中的一群接口.外观定义了一个高层接口让子系统更容易使用. 一个外观包含了为许多对象和对他们的操作,使得重复这些操作更方便. 假如客厅里有灯(Lights ...

  9. [设计模式]外观模式

    1. 定义 外观模式 提供了一个统一的接口,用来访问子系统中的一群接口.外观定义了一个高层接口,让子系统更加容易使用. 外观不仅简化了系统内接口的使用,也将客户从组件中的子系统中解耦,外观和适配器都可 ...

最新文章

  1. Python,OpenCV中的非局部均值去噪(Non-Local Means Denoising)
  2. BestCoder冠军赛 - 1005 Game 【DP】
  3. 窗口分析函数_11_生成百分比排名
  4. 收官蓉城,展望2019多媒体技术新方向(内附资料下载)
  5. java邮箱地址正则表达式_Java 中用正则表达式修改 Email 地址
  6. 我的编程之路(二十五) 上海的老同学
  7. Linux下配置Hadoop全分布式环境
  8. Paip.Php Java 异步编程。推模型与拉模型。响应式(Reactive)”编程FutureData总结... 1
  9. Akash,全球首个去中心化云计算
  10. 学历学籍管理系统-MVC和工厂模式实现学籍查询与录入
  11. 30岁程序媛在一家公司工作八年后,告别“体制化”终于跳槽,别再妄想靠公司养老了!
  12. 免流解密之SAOML二开
  13. 零代码也能玩转指标系列:通过界面也能实现指标的四则运算
  14. PhpStorm2017破解版
  15. 二、Nio之Channel
  16. Andriod 电池检测NTC电阻值的软件设定
  17. Surround360 Render目录下CALIBRATION文档——中文翻译
  18. 百万级用户量的站内信设计
  19. Win2000/XP服务与后门技术(zz)
  20. VSCode终端选择虚拟环境

热门文章

  1. 贝叶斯决策之最小平均风险
  2. 自考本科数据结构导论(02142)历年(应用题+算法题)真题汇总【20年4月-22年10月】
  3. Spark 调研报告
  4. 最新香橙互赞宝V1.31程序源码
  5. 手机碎屏党必备,转移你未备份的手机文件
  6. 科蒂斯控制器故障代码_科蒂斯控制器故障代码指示.pdf
  7. 举例得到的遗传算法工具箱GA是求最小值的算法
  8. 淘宝 ecshop 图片大小设置 问题
  9. 绝地求生哪个服务器有信号枪,绝地求生活动模式公告 绝地求生信号枪终于登陆正式比赛...
  10. 世界上排名前三的大学