zoukankan      html  css  js  c++  java
  • 8 外观模式

    外观模式(Facade)定义:提供了一个统一的接口,用来访问子系统中的一组接口。此模式定义了一个高层接口,让子系统更易于使用。

    类图如下:

    Facade

    Facade类封装了SubSystem的方法或接口,Client只需与Facade交互。比如,如果SybSystem是单支股票,那么基金就可以认为是他们的Facade,因为一支基金背后有好多支股票,对用户来说,基金也比股票省心。

    外观模式的使用场合有如下几种情况:

    1 在设计阶段,应该有意识地将不同的层分开,比如三层架构,在层与层之间就可以使用外观模式;

    2 在开发阶段,子系统因为不断的重构演化而变得复杂,可以用外观模式简化调用;

    3 维护旧系统时,对于内部一些重要的功能,这些功能和背后的代码都比较复杂,基于这些功能开发的时候,可以使用外观模式。

    外观模式与适配器模式的比较:

    外观模式和适配器模式都可以封装很多个类。但两者的意图不同,外观模式的意图是简化接口,而适配器模式的意图是将接口转换成不同的接口。

    此外,外观模式还可以附加“聪明”的功能,因为Facade内部可以控制对子系统的调用方式,就像基金管理人的操作多支股票一样。

    德墨忒尔法则

    德墨忒尔法则(Law of Demeter)也叫最少知识,如果两个类不必彼此直接通信,那么这两个类就不应当发生直接的相互作用。如果其中一个类需要调用另一个类的某一个方法的话。类应当降低成员的访问权限,除非有必要让外部访问的成员,否则都设置为private,而需要公开的字段,就要用属性来封装。

    德墨忒尔法则强调类与类之间的松耦合,松耦合的设计可以促进复用。

  • 相关阅读:
    探索式测试实践之路
    管理是什么?真正的管理者是,“管”+“理”!
    JavaScript中的函数式编程
    node js的终端中 console.log 嵌套对象会被折叠的问题
    apt-get install的默认安装路径
    nodejs 事件循环 试题思考
    仅20行的JavaScript模板引擎
    js 驼峰命名转烤串
    git reset 进阶
    linux 拷贝文本到剪切板
  • 原文地址:https://www.cnblogs.com/zhixin9001/p/6071726.html
Copyright © 2011-2022 走看看