Skip to content

Commit 08ca72c

Browse files
committed
外观模式 校对完毕
1 parent ce36b39 commit 08ca72c

File tree

1 file changed

+10
-11
lines changed

1 file changed

+10
-11
lines changed

chapter7.markdown

Lines changed: 10 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -612,37 +612,36 @@ JavaScript没有类,所以一字一句地说单例的定义并没有什么意
612612

613613
如你所见,`validator`对象是通用的,在所有的需要验证的场景下都可以保持这个样子。改进它的办法就是增加更多类型的检查。如果你将它用在很多页面上,那么很快你就会有一个非常好的验证类型的集合。然后在新的使用场景下使用时你需要做的仅仅是配置`validator`然后调用`validate()`方法。
614614

615-
<a name="a15"></a>
616615
## 外观模式
617616

618-
外观模式是一种很简单的模式,它只是为对象提供了更多的可供选择的接口。使方法保持短小而不是处理太多的工作是一种很好的实践。在这种实践的指导下,你会有一大堆的方法,而不是一个有着非常多参数的uber方法。有些时候,两个或者更多的方法会经常被一起调用。在这种情况下,创建另一个将这些重复调用包裹起来的方法就变得意义了。
617+
外观模式是一种很简单的模式,它只是为对象提供了更多的可供选择的接口。使方法保持短小而不是处理太多的工作是一种很好的实践。在这种实践的指导下,你会有一大堆的方法,而不是一个有着非常多参数的`uber`方法。有些时候,两个或者更多的方法会经常被一起调用。在这种情况下,创建另一个将这些重复调用包裹起来的方法就变得意义了。
619618

620-
例如,在处理浏览器事件的时候,有以下的事件
619+
例如,在处理浏览器事件的时候,有以下的方法
621620

622-
- stopPropagation()
621+
- `stopPropagation()`
623622

624623
阻止事件冒泡到父节点
625-
- preventDefault()
624+
- `preventDefault()`
626625

627626
阻止浏览器执行默认动作(如打开链接或者提交表单)
628627

629628
这是两个有不同目的的相互独立的方法,他们也应该被保持独立,但与此同时,他们也经常被一起调用。所以为了不在应用中到处重复调用这两个方法,你可以创建一个外观方法来调用它们:
630629

631630
var myevent = {
632-
// ...
631+
// ……
633632
stop: function (e) {
634633
e.preventDefault();
635634
e.stopPropagation();
636635
}
637-
// ...
636+
// ……
638637
};
639638

640639
外观模式也适用于一些浏览器脚本的场景,即将浏览器的差异隐藏在一个外观方法下面。继续前面的例子,你可以添加一些处理IE中事件API的代码:
641640

642641
var myevent = {
643-
// ...
642+
// ……
644643
stop: function (e) {
645-
// others
644+
// 其它浏览器
646645
if (typeof e.preventDefault === "function") {
647646
e.preventDefault();
648647
}
@@ -657,10 +656,10 @@ JavaScript没有类,所以一字一句地说单例的定义并没有什么意
657656
e.cancelBubble = true;
658657
}
659658
}
660-
// ...
659+
// ……
661660
};
662661

663-
外观模式在做一些重新设计和重构工作时也很有用。当你想用一个不同的实现来替换某个对象的时候,你可能需要工作相当长一段时间(一个复杂的对象),与此同时,一些使用这个新对象的代码也在被同步编写。你可以先想好新对象的API,然后使用新的API创建一个外观方法在旧的对象前面。使用这种方式,当你完全替换到旧的对象的时候,你只需要修改少量客户代码,因为新的客户代码已经是在使用新的API了
662+
外观模式在做一些重新设计和重构工作时也很有用。当你想用一个不同的实现来替换某个对象的时候,你可能需要花相当长一段时间才能完成(一个复杂的对象),与此同时,一些使用这个新对象的代码也在被同步编写。你可以先想好新对象的API,然后在旧的对象前面使用新的API创建一个外观方法。使用这种方式,当你完全替换掉旧的对象的时候,你只需要修改少量的调用代码,因为新的代码已经是在使用新的API了
664663

665664
<a name="a16"></a>
666665
## 代理模式

0 commit comments

Comments
 (0)