>[success] # 代理模式总结 ~~~ 1.代理模式诠释了面向对象中的'单一职责原则'和'开放-封闭原则' 2.在'后台代理模式': 在 Java 等语言中,代理和本体都需要显式地实现同一个接口,一方面接口保证了它们会拥有同样的方法, 另一方面,面向接口编程迎合依赖倒置原则,通过接口进行向上转型,从而避开编译器的类型检查,代理和 本体将来可以被替换使用。 3.在'前端代理模式': 在 JavaScript这种动态类型语言中,我们有时通过鸭子类型来检测代理和本体是否都实现了共同的方法, 另外大多数时候甚至干脆不做检测,全部依赖程序员的自觉性,这对于程序的健壮性是有影响的。不过 对于一门快速开发的脚本语言,这些影响还是在可以接受的范围内,而且我们也习惯了没有接口的世界 4.代理模式站在java的角度来说需要代理对象和本体要实现相同的方法,但是在代理实现方法中,要实现 本体的实例在调用本体实现的方法。怎么做好处: 4.1.用户可以放心地请求代理,他只关心是否能得到想要的结果 4.2.在任何使用本体的地方都可以替换成使用代理(代理用了和本体的调用方法的名称相同的,并且代理 只是做了在何时去调用本体实例和代理一样的方法名,因此本质还是使用的是本体,所以任何本体和代理都是 可以替换的) ~~~ >[danger] ##### 《JavaScript设计模式与开发实践》-- 作者最后说的建议 ~~~ 1.代理模式包括许多小分类,在 JavaScript 开发中最常用的是虚拟代理和缓存代理。 虽然代理模式非常有用,但我们在编写业务代码的时候,往往不需要去预先猜测是否 需要使用代理模式。当真正发现不方便直接访问某个对象的时候,再编写代理也不迟。 ~~~