本文发表在 rolia.net 枫下论坛ADAPTER PATTERN往往用于提供一个统一的interface来访问不同的系统。java.io中的Reader和Writer就是一个极好的例子,BufferedReader, LineNumberReader, CharArrayReader, InputStreamReader, FileReader, FilterReader, PushbackReader, PipedReader, StringReader等提供近乎相同的接口以访问不同的data source.
PROXY PATTERN提供是一个代理,可以是一个lightweight的代理或是一个local的代理等等。它的作用就象PROXY SERVER所提供的SERVICE一样,隐藏那些heaveweight或是remote的object。EJB,RMI和CORBA中的那些local object就是PROXY。
FASCADE PATTERN是用于提供一个简单/简化的interface来访问一个复杂的系统。EJB PATTERN中经常提及的SESSION FASCAD就是FASCAD PATTERN的具体应用。用一个SESSION EJB作为FASCAD来简化client对繁多而复杂的business logic和ENTITY EJB的使用。
三者的差别简单来看是这样:
ADAPATER PATTERN 中有多少ADAPTEE, 就有多少ADAPTER。但所有的ADAPTER会提供同样的interface.
PROXY PATTERN中,PROXY是heavyweight或remote objects的简化实现,PROXY提供同被represent的object同样的interface。不同的PROXY间可以完全没有联系。
FASCAD PATTERN中,client只看见一个FASCAD,而并不同被FASCAD隐藏起来的object打交道,甚至不知道这些object的存在。FASCAD和背后的object是一对多的关系。更多精彩文章及讨论,请光临枫下论坛 rolia.net
PROXY PATTERN提供是一个代理,可以是一个lightweight的代理或是一个local的代理等等。它的作用就象PROXY SERVER所提供的SERVICE一样,隐藏那些heaveweight或是remote的object。EJB,RMI和CORBA中的那些local object就是PROXY。
FASCADE PATTERN是用于提供一个简单/简化的interface来访问一个复杂的系统。EJB PATTERN中经常提及的SESSION FASCAD就是FASCAD PATTERN的具体应用。用一个SESSION EJB作为FASCAD来简化client对繁多而复杂的business logic和ENTITY EJB的使用。
三者的差别简单来看是这样:
ADAPATER PATTERN 中有多少ADAPTEE, 就有多少ADAPTER。但所有的ADAPTER会提供同样的interface.
PROXY PATTERN中,PROXY是heavyweight或remote objects的简化实现,PROXY提供同被represent的object同样的interface。不同的PROXY间可以完全没有联系。
FASCAD PATTERN中,client只看见一个FASCAD,而并不同被FASCAD隐藏起来的object打交道,甚至不知道这些object的存在。FASCAD和背后的object是一对多的关系。更多精彩文章及讨论,请光临枫下论坛 rolia.net