首页 js设计模式-门面模式
文章
取消

js设计模式-门面模式

甜美

门面模式

在讲适配器模式的时候,我们和门面模式做了特别区分,现在讲门面模式时候,我们还要特别区分一下。 他们的不同在于:

  1. 适配器模式是为了适配对接目标对象而设计使用的;
  2. 而门面模式是为了简化,整理,归类某一相关属性的代码、方法等,我们统一抽离/封装/归类到了同一处地方的这么一个过程,形成的这么一种对象形式,是一种封装之后的简化,

门面模式就是要把那些统筹层面的常用的,实现比较复杂繁琐的方法、处理流程等归类到合适的对象上,
让开发人员不必每次使用再单独去执行其详细实现算法和思维。比如我们项目中经常使用到的 utils 文件:

1
2
3
4
5
6
7
8
9
10
11
12
13
const util = {
  validatorHandlers: {
    verifyPhone: () => {},
    verifyEmail: () => {}
    // ...
  },
  numberEmptyHandle: () => {},
  upload: () => {
    // ...
  },
  downloadFile: () => {}
  // 等等....
};

我们不再去关注其每个功能的具体实现方法,根据语义,直接调用方法即可。
比如早期浏览器,各个浏览器的事件监听,冒泡,阻止等使用方法也不相同,
我们每次使用到对应功能,都要把代码重新写一遍,这样工作效率很受阻

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
var DED = window. DED || {}:
DED.util={
stopPropagation: function(e) {
  if (e.stopPropagation){
    // W3 interface
    e.stopPropagation();
  }else {
    // IE's interface
    e.cancelBubble = true;
  }
},
preventDefault: function(e) {
  if (e.preventDefault){
    / W3 interface
    e.preventDefault();
  }else {
    // IE's interface
    e.returnValue-false;
  }
}
/* our convenience method */
stoptvent: function(e) {
  DED.util.stopPropagation(e);
  DED.util.preventDefault(e);
}

门面模式使用场合

上面已经讲过了,在一些经常使用,实现繁琐复杂,应用场景经典出现的地方,使用的一些方法,代码都可以做门面模式封装

3. 适配器模式之利

门面模式提供了各种的基础开发方法,代码实现,代码抽离,可以让程序员开发更轻松高效一些

4. 适配器模式之弊

门面模式也要注意分类规划,不应在一个对象中堆叠太多的元素方法等,仿佛编程了一个这类东西的库,
每个项目使用就得引入,到一定程度时候,也算比较大的文件了,应该控制这个度量

我的读后感;

门面方式已经在代码开发中不经意的有在使用中,这里的理念算是一次特意的提醒,提亮技术专业度。

js设计模式-适配器模式

我做前端leader的日常工作内容都做了什么