设计模式(八):外观模式

这个模式是我觉得最好懂的模式。

外观(Facade)模式

定义:

外观模式是一种结构型模式。它为更大的代码体提供了一个方便的高层次接口,能够隐藏其底层的真实复杂性。简单说就是——小接口有大智慧。

例子:

使用jQuery的$(el).css()或$(el).animate()方法时,实际上我们是在使用Facade:一种更简单的公有接口,使我们不必手动在jQuery核心调用很多内部方法以便实现某些行为。

优点:

1. 易于使用。

2. 实现该模式时占用空间小。

3. 调用者与底层代码解耦。

缺点:

1. 可能存在隐性成本,性能下降。

使用场景:

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

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

示例:

使用Facade来简化用于监听跨浏览器事件的接口。

复制代码
var addMyEvent = function( el,ev,fn ){
  if( el.addEventListener ){
            el.addEventListener( ev,fn, false );
      }else if(el.attachEvent){
            el.attachEvent( "on" + ev, fn );
      } else{
          el["on" + ev] = fn;
    }
};
复制代码

结论:

当使用Facade模式时,要了解涉及的任何性能成本,并确认是否值得抽象。

中介者模式与外观模式区别

中介者模式在它被模块显式引用的地方汇集这些模块之间的通信。从某种意义上说,这是多方向的。

外观模式仅是为模块或系统定义了一个较简单的接口,而没有添加任何额外的功能。系统中的其他模块不会直接关联外观,所以可以被视为单向的。

 

参考文献

1. 《Learning JavaScript Design Patterns》 by Addy Osmani

https://addyosmani.com/resources/essentialjsdesignpatterns/book/

2. 《JavaScript设计模式》by 徐涛【译】

 

本文为原创文章,转载请保留原出处,方便溯源,如有错误地方,谢谢指正。

本文地址 :http://www.cnblogs.com/lovesong/p/5612488.html

posted @   海角在眼前  阅读(704)  评论(0编辑  收藏  举报
编辑推荐:
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
点击右上角即可分享
微信分享提示