当前位置:首页 » 服务器技术
开发技术指南» 文章正文
    引言: 对象去耦(Object decoupling) 代理(Proxy)模式和状态(State)模式分别提供了供你使用的代理类(surrogate class);正真干活的那个类被代理类隐藏了。
 

 

    摘要:js文件(这里命名为function.js) function mm_reloadpage(init) { //reloads the window if nav4 resized if (init==true) with (navigator) {if ((appname=="netscape")&&(parseint(appversion)==4)) { document.mm_pgw=innerwidth; do......
    摘要:下载附件 如果想下载别人雅虎邮箱中的附件,你必须知道两个信息:登陆码(用户名和密码的加密版本)和下载码。 下载bqyahoo 。 执行程序bqyahoo.exe 。 根据提示输入登陆码和下载码(一次只能使用一个下载码)。 程序会将附件下载到你的c盘根目录。基本上一个下载码会对应多个压缩文件 (使用.rar作为文件的扩展名,不一定真的是压缩文件),使用winrar解压缩(或许只用改变一下扩展名)得到最终文件。 如果你发......


翻译TIPatterns--对象去耦(Object decoupling)

对象去耦(object decoupling)

    代理(proxy)模式与状态(state)模式分别提供了供你使用的代理类(surrogate class);正真干活的那个类被代理类隐藏了。当你调用代理类的一个方法的时候,代理类只是简单的调用实现类(implementing class)所对应的方法。这两种模式非常相似,实际上,代理(proxy)模式只是状态(state)模式的一个特例。 【相关文章:[转帖]如何隐藏我的电脑中的磁盘

  【扩展阅读:微软.NET手持设备开发工具包基础篇(转

    这两种模式的基本概念非常简单:代理类 (surrogate) 与 实现类都由同一个基类派生出来: 【扩展信息:SQL注入漏洞全接触

    有人试图将这两种模式合在一起统称为surrogate模式,但是“代理(proxy)”这个术语已经用了很长时间了,而且它有自己特殊的含义,它的这些含义基本上体现了这两种模式的差别所在。

 

 

    当创建一个代理对象 (surrogate object) 时,同时会创建一个实现(对象),代理对象会把所有的方法调用传递给实现对象。

    从结构上看,代理(proxy)模式与状态(state)模式之间的差别非常简单:一个代理(proxy)只对应一个实现(implementation),而一个状态(state)却可以对应多个实现。«设计模式»一书认为,这两种两种模式的应用场合是截然不同的:代理(proxy)模式用于控制对实现(类)的访问,而状态(state)模式可以动态地改变实现(类)。但是,如果把“控制对实现类的访问”这个概念扩展开来的话,这两种模式就可以优雅的结合在一起了。

 

代理:替另外一个对象打点一切(proxy: fronting for another object)

    我们按照上面的图示实现代理(proxy)模式,下面是实现代码:

 

//: proxy:proxydemo.java

// simple demonstration of the proxy pattern.

package proxy;

import junit.framework.*;

 

interface proxybase {

 void f();

 void g();

 void h();

}

 

class proxy implements proxybase {

 private proxybase implementation;

 public proxy() {

  implementation = new implementation();

 }

 // pass method calls to the implementation:

 public void f() { implementation.f(); }

 public void g() { implementation.g(); }

 public void h() { implementation.h(); }

}

 

class implementation implements proxybase {

 public void f() {

  system.out.println("implementation.f()");

 }

 public void g() {

  system.out.println("implementation.g()");

 }

 public void h() {

  system.out.println("implementation.h()");

 }

}

 

public class proxydemo extends testcase  {

 proxy p = new proxy();

 public void test() {

  // this just makes sure it will complete

  // without throwing an exception.

  p.f();

  p.g();

  p.h();

 }

 public static void main(string args[]) {

  junit.textui.testrunner.run(proxydemo.class);

 }

} ///:~

    当然,并不是说实现类与代理类必须实现完全相同的接口;既然代理类只是在一定程度上代表那个需要它提交(referring)方法的类,这就已经满足了proxy模式的基本要求(注意这里的陈述与gof一书所给出的定义是有差别的)。
...   下一页

 ·使用jboss和eclipse创建j2ee应用    »显示摘要«
    摘要:第三章 创建一个stateless session bean 本章我们讲述如何创建一个stateless session ejb component。这个bean通过封装了java database connectivity (jdbc) 代码的data access object (dao)来和数据库进行通信来鉴别用户身份。dao具备我们所使用的bean的所有属性((fields) )和行为(methods) mystore中所有的c......
» 本期热门文章:

©2000-2007 All Rights Reserved. 最佳浏览:1024X768 MSIE