File tree Expand file tree Collapse file tree 1 file changed +10
-11
lines changed Expand file tree Collapse file tree 1 file changed +10
-11
lines changed Original file line number Diff line number Diff line change @@ -612,37 +612,36 @@ JavaScript没有类,所以一字一句地说单例的定义并没有什么意
612
612
613
613
如你所见,` validator ` 对象是通用的,在所有的需要验证的场景下都可以保持这个样子。改进它的办法就是增加更多类型的检查。如果你将它用在很多页面上,那么很快你就会有一个非常好的验证类型的集合。然后在新的使用场景下使用时你需要做的仅仅是配置` validator ` 然后调用` validate() ` 方法。
614
614
615
- <a name =" a15 " ></a >
616
615
## 外观模式
617
616
618
- 外观模式是一种很简单的模式,它只是为对象提供了更多的可供选择的接口。使方法保持短小而不是处理太多的工作是一种很好的实践。在这种实践的指导下,你会有一大堆的方法,而不是一个有着非常多参数的uber方法 。有些时候,两个或者更多的方法会经常被一起调用。在这种情况下,创建另一个将这些重复调用包裹起来的方法就变得意义了。
617
+ 外观模式是一种很简单的模式,它只是为对象提供了更多的可供选择的接口。使方法保持短小而不是处理太多的工作是一种很好的实践。在这种实践的指导下,你会有一大堆的方法,而不是一个有着非常多参数的 ` uber ` 方法 。有些时候,两个或者更多的方法会经常被一起调用。在这种情况下,创建另一个将这些重复调用包裹起来的方法就变得意义了。
619
618
620
- 例如,在处理浏览器事件的时候,有以下的事件 :
619
+ 例如,在处理浏览器事件的时候,有以下的方法 :
621
620
622
- - stopPropagation()
621
+ - ` stopPropagation() `
623
622
624
623
阻止事件冒泡到父节点
625
- - preventDefault()
624
+ - ` preventDefault() `
626
625
627
626
阻止浏览器执行默认动作(如打开链接或者提交表单)
628
627
629
628
这是两个有不同目的的相互独立的方法,他们也应该被保持独立,但与此同时,他们也经常被一起调用。所以为了不在应用中到处重复调用这两个方法,你可以创建一个外观方法来调用它们:
630
629
631
630
var myevent = {
632
- // ...
631
+ // ……
633
632
stop: function (e) {
634
633
e.preventDefault();
635
634
e.stopPropagation();
636
635
}
637
- // ...
636
+ // ……
638
637
};
639
638
640
639
外观模式也适用于一些浏览器脚本的场景,即将浏览器的差异隐藏在一个外观方法下面。继续前面的例子,你可以添加一些处理IE中事件API的代码:
641
640
642
641
var myevent = {
643
- // ...
642
+ // ……
644
643
stop: function (e) {
645
- // others
644
+ // 其它浏览器
646
645
if (typeof e.preventDefault === "function") {
647
646
e.preventDefault();
648
647
}
@@ -657,10 +656,10 @@ JavaScript没有类,所以一字一句地说单例的定义并没有什么意
657
656
e.cancelBubble = true;
658
657
}
659
658
}
660
- // ...
659
+ // ……
661
660
};
662
661
663
- 外观模式在做一些重新设计和重构工作时也很有用。当你想用一个不同的实现来替换某个对象的时候,你可能需要工作相当长一段时间 (一个复杂的对象),与此同时,一些使用这个新对象的代码也在被同步编写。你可以先想好新对象的API,然后使用新的API创建一个外观方法在旧的对象前面 。使用这种方式,当你完全替换到旧的对象的时候,你只需要修改少量客户代码,因为新的客户代码已经是在使用新的API了 。
662
+ 外观模式在做一些重新设计和重构工作时也很有用。当你想用一个不同的实现来替换某个对象的时候,你可能需要花相当长一段时间才能完成 (一个复杂的对象),与此同时,一些使用这个新对象的代码也在被同步编写。你可以先想好新对象的API,然后在旧的对象前面使用新的API创建一个外观方法 。使用这种方式,当你完全替换掉旧的对象的时候,你只需要修改少量的调用代码,因为新的代码已经是在使用新的API了 。
664
663
665
664
<a name =" a16 " ></a >
666
665
## 代理模式
You can’t perform that action at this time.
0 commit comments