1. 秦子帅的博客首页
  2. Android

设计模式(13)-外观模式详解(文末送书福利)

设计模式(13)-外观模式详解(文末送书福利)

安卓干货铺
专注Android技术,坚持原创+博文分享
关注

外观模式的定义

外观模式(Facade),也被称为“门面模式”,为子系统中的一组接口提供一个一致的界面,定义一个高层接口,这个接口使得这一子系统更加容易使用。

模型:

设计模式(13)-外观模式详解(文末送书福利)

  • Facade:外观角色,了解子系统所有的方法和任务,此角色有自己的方法,client通过此角色方法来调用子系统的功能

  • Subsystem:子系统角色,可以是一个也可以是多个,子系统是分化的不同的处理模块,不是单独的类。

代码演示:

1.子系统:

强调一下:这两个类不是独立的,可以看成是一个集合。如果不明白的话,往下面去看实例说明,应该好懂一些。

2.外观类:

对外提供的方法根据客户端的需求来决定。下面通过一个实例来了解一下。

实例说明

例如我们在今日头条或者微信公众号上发布文章,经常分为两步:

  • 编写文章内容并提交文章

  • 审核(审核通过才能发布成功)

1.子系统


2.外观类


3.调用:

运行:


设计模式(13)-外观模式详解(文末送书福利)

强调:

子系统每个类不是独立的,两个类分为不同的模块并形成一个集合;另外子系统每个类中的方法数可以是一个或者多个。

实外观模式的优缺点及其他

1.优点

  • 减少系统的相互依赖,客户端只能调用外观类的方法

  • 提高安全性

  • 子系统是隐藏的

2.缺点

不符合开闭原则!!,如果对开闭原则不熟悉的朋友可以看下面的文章:

六大设计原则详解(6)-开闭原则

3.适用场景

在以下情况下可以考虑使用外观模式:

  • 设计初期阶段,应该有意识的将不同层分离,层与层之间建立外观模式。

  •  开发阶段,子系统越来越复杂,增加外观模式提供一个简单的调用接口。

  • 维护一个大型遗留系统的时候,可能这个系统已经非常难以维护和扩展,但又包含非常重要的功能,为其开发一个外观类,以便新系统与其交互。

本文部分定义来源于网络

送书福利

本次联系了电子工业出版社博文视点的老师,给大家带来一波送书福利。本次送书需大家在留言区留言,留言的点赞数前两名,将每人送一本《疯狂Kotlin讲义》,规则见下方。

下面是本书的介绍:

设计模式(13)-外观模式详解(文末送书福利)

1.逻辑结构更合理

内容体系上将函数式编程和面向对象编程独立开来,先介绍函数式编程部分,再介绍面向对象编程,更符合Kotlin语言本身的知识体系。而不像某些资料一会儿函数,一会儿面向对象,搅得读者晕头转向。

2.讲解深入本质

Kotlin是JVM语言,所以其很多东西其实是受到Java的影响的。书中会对一些看似奇怪的语法从字节码文件层次进行剖析,让读者更好地理解Kotlin与Java的对应关系。

3.知识内容更全面

内容超过Kotlin官方文档本身所覆盖的知识,比如介绍反射的章节就超过了Kotlin官方文档内容。反射部分不仅更详细地介绍如何获得类、函数、属性的引用,而且真正从API级别介绍KClass、KCallable、KFunction、KProperty,KProperty0、KProperty1、KProperty2的用法,以及它们的内在关联,并实实在在地教读者掌握如何用Kotlin反射动态创建对象、动态调用方法。

如果想直接购买的话,可以扫下面的二维码:

设计模式(13)-外观模式详解(文末送书福利)


下面说一下本次送书活动的规则:

1.只有关注了本公众号的伙伴才能参加

2.谈论话题:谈谈你是如何从新人一步步走来,或者说你是如何学习的;如果你是新人可以谈谈你是如何自学的

3.点赞排名前两名每个获得一本书,禁止刷赞,刷赞无效

4.活动时间:截止到3月16日晚8点

最后,希望大家多多参与,获奖是次要的,主要是大家多多传递正能量,互相帮助,交流,每天进步一点点!

设计模式(13)-外观模式详解(文末送书福利)

推荐阅读:

我的技术群

设计模式(13)-外观模式详解(文末送书福利)

设计模式(13)-外观模式详解(文末送书福利)

原文始发于微信公众号( 秦子帅 ):设计模式(13)-外观模式详解(文末送书福利)

发布者:秦子帅,转转请注明出处:http://qinzishuai.cn/index.php/2018/03/15/607d30d9d8/

联系我们

912241847

在线咨询:点击这里给我发消息

邮件:qzs531156@163.com

QR code