代理模式与桥接模式 备忘

来源:互联网 发布:js数组移除一个元素 编辑:程序博客网 时间:2024/06/05 06:35

代理模式是建立在客户端和 实现层之间的屏障,只向客户端展现其关心的一部分,而屏蔽掉其职责之外的部分,类似于数据库中视图的功能。实现类可以实现很多的接口,但其中只有一个接口是与具体某个客户端相关的,这样,就不需要向客户端展示其不相关的部分。代理类通过调用实现类的实现方法来实现这个接口(除了调用实现类的相应方法,代理类本身不干其他的事情)。这样也使得业务逻辑更加清晰。

桥接模式相比代理模式要复杂,在jdk中最常见的一个例子就是从文本中读入数据到内存中,首先将文本读成Stream,然后用根据这个Stream新建一个Reader,完成从字节流到字符流的转变,再有可能用这个普通的Reader新建一个BufferedReader。这样就完成了三个方向的变化:从File到内存中的字节、从字节转换为字符、将字符转换为缓冲模式。其中读入Stream、Reader都有各种各样的实现类,但只需要遵循接口规范,就可以组合使用。

最终实现将File读入到内存中的字符,不是通过一个类一个类的层层继承实现的,而是通过不同的接口的实现类之间的组合方式实现的,各个接口之间分工明确(有点类似TCP/IP协议中的分层结构了),每个接口的实现类都有一个变化因素。这样形成的代码层次清晰,结构简单,十分易于维护和扩展。参见http://www.cnblogs.com/houleixx/archive/2008/02/23/1078877.html,这篇博文也讲的十分清除,只是举例过于生硬,可以直接用jdk中现成的应用来讲解的。

0 0
原创粉丝点击