| FazBrowse GitHub Viewer | Trending | | Home |
| Tools: [Download Repo ZIP] [Original HTTPS Page] |
| 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 | ## 代理模式 | |
| Back | FazBrowse Home | New Git URL |
0 commit comments