小菜学设计模式——外观模式
小菜学设计模式——外观模式
learn_more 发表于3年前
小菜学设计模式——外观模式
  • 发表于 3年前
  • 阅读 130
  • 收藏 10
  • 点赞 1
  • 评论 2

【腾讯云】如何购买服务器最划算?>>>   

摘要: 本文是在学习《大话设计模式》所做的笔记,主要是个人理解面向对象、面向接口编程的设计模式:外观模式

背景

   一个坦克系统,子系统是履带系统,发动机系统,火炮系统,防卫装甲系统等。对外的接口就是暴露给使用人员的是Run(), shot(), stop()等。如果没有采用Facade模式,开动坦克需要直接依赖履带系统,发动机系统。直接去操作履带,操作发动机?各个接口和子系统都产生了紧耦合。(引用自互联网)

    问题产生了:组件的客户(接口)和组件内各个复杂子系统有过多的耦合,随着外部客户程序和各个子系统的变化,这种耦合面临着变化的挑战。 

    如何简化外部客户程序和系统间的交互接口,如何将外部程序的演化和内部子系统的变化解耦? 

    使该简单的简单!不管内部实现怎么变化,我们只要Run(), shot(), stop()!

1、使用意图

    为子系统中的一组接口提供一个一致的界面,Facade模式定义了一个高层接口,这个接口使得这一子系统更加容易使用

2、生活实例

    外观模式为子系统中的接口定义了一个统一的更高层次的界面,以便于使用。当消费者电话订购时,则体现了一个外观模式。消费者拨打一个号码与客服代表联系,客服代表则扮演了这个"外观",他包含了与订货部、收银部和送货部的接口。

3、Java 例子(框架、JDK 、JEE)

    TIka,Apache的一个文本内容抓取框架,Tika中的Tika类采用了外观模式,这个类主要集成了语言识别、内容解析、类型识别;Tika类通过外观模式把上面几个类的功能都统一了接口对外出来,也就是parser方法,在parser方法内部自己调用这些小模块完成整个功能!

4、模式类图

5、模式优点

    1. 为一个复杂子系统提供一个简单接口;

    2. 提高子系统的独立性;

    3. 在层次化结构中,可以使用Facade模式定义系统中每一层的入口。

6、与类似模式比较

    1、Facade设计模式更注重从架构的层次去看整个系统,而不是单个类的层次。Facade很多时候更是一种架构设计模式。

    2、Facade更注重简化接口,Adapter模式注重转换接口,Bridge模式注重分离接口(抽象)与其实现,Decorator模式注重稳定接口的前提下为对象扩展功能。


标签: 外观模式
共有 人打赏支持
粉丝 90
博文 239
码字总数 208862
评论 (2)
小弓长
很不错的文章
甩葱哥
言简意赅很管用
×
learn_more
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
* 金额(元)
¥1 ¥5 ¥10 ¥20 其他金额
打赏人
留言
* 支付类型
微信扫码支付
打赏金额:
已支付成功
打赏金额: