当前位置:首页 > 开发 > Web前端 > 前端 > 正文

java设计模式之代理模式

发表于: 2013-11-13   作者:基地分子   来源:转载   浏览:
摘要: 代理和装饰模式的区别: 他们在代码实现上有很大的相同点但是本质有着区别 装饰器模式:能动态的新增或组合对象的行为。 代理模式:为其他对象提供一种代理以控制对这个对象的访问. 装饰模式是“新增行为”,而代理模式是“控制访问”。关键就是我们如何判断是“新增行为”还是“控制访问”。 代理具体的时间方法: 第一步:定义一个接口: package cn.eversec.pr
代理和装饰模式的区别:

他们在代码实现上有很大的相同点但是本质有着区别

装饰器模式:能动态的新增或组合对象的行为。 
代理模式:为其他对象提供一种代理以控制对这个对象的访问. 
装饰模式是“新增行为”,而代理模式是“控制访问”。关键就是我们如何判断是“新增行为”还是“控制访问”。

代理具体的时间方法:

第一步:定义一个接口:
package cn.eversec.proxy;
public interface Student {
public String xuexi();
public String daren();
}
第二步:实现要代理的接口
package cn.eversec.proxy;
public class StudentImpl implements Student {
@Override
public String xuexi() {
// TODO Auto-generated method stub
return "haohaoxuexi,tiantianxiangshang";
}
 
@Override
public String daren() {
// TODO Auto-generated method stub
return "woyaodaren";
}
}
第三部:书写代理逻辑(这里采用动态代理的方式)
package cn.eversec.proxy;
 
import java.lang.reflect.InvocationHandler;
import java.lang.reflect.Method;
import java.lang.reflect.Proxy;
 
public class ProxyImpl implements InvocationHandler {
 //定义一个对象(实际就是要代理的对象)
private Object obj;
 
public ProxyImpl(){
 
}
 
public ProxyImpl(Object obj){
this.obj=obj;
}
 
@Override
public Object invoke(Object proxy, Method method, Object[] args)
throws Throwable {
 
if(method.getName().equals("xuexi")){
before();
Object invoke = method.invoke(obj, args);
after();
return invoke;
}else{
Object invoke = method.invoke(obj, args);
return invoke.toString();
}
}
 
public static Object factory(Object obj)  
   {  
       Class cls = obj.getClass();  
       return Proxy.newProxyInstance(cls.getClassLoader(),cls.getInterfaces(),new ProxyImpl(obj));  
   }  
 //代理前的操作
public void before(){
System.out.println(">>>>>");
}
 //代理后的操作
public void after(){
System.err.println("============");
}
 
}
第四步:书写测试类
package cn.eversec.proxy;
 
public class DynamicProxy {
 
public static void main(String[] args) {
 
Student student = new StudentImpl();
 
Student factory = (Student) ProxyImpl.factory(student);
 
String xuexi = factory.xuexi();
 
System.out.println(xuexi);
 
// String daren = student.daren();
// System.out.println(daren);
}
}
以上代码如有疑问可以询问892086352

 

java设计模式之代理模式

  • 0

    开心

    开心

  • 0

    板砖

    板砖

  • 0

    感动

    感动

  • 0

    有用

    有用

  • 0

    疑问

    疑问

  • 0

    难过

    难过

  • 0

    无聊

    无聊

  • 0

    震惊

    震惊

编辑推荐
摘要:感受设计演变过程中所蕴含的大智慧,体会乐与怒的程序人生中值得回味的一幕幕。本文转自大话
wangking717 写道 代理模式的作用是:为其他对象提供一种代理以控制对这个对象的访问。在某些情况下
代理模式其实就是为另一个对象提供一个替身或者占位符以控制这个对象的访问,所谓代理,就是一个人
这里只是简单的介绍下最基本的代理的使用。 代理,通俗点说 :就是一个人或者一个机构代表另一个人
模式定义 代理模式是对象的结构模式。代理模式给某一个对象提供一个代理对象,并由代理对象控制对原
1,什么是代理模式? 代理模式的作用是:为其他对象提供一种代理以控制对这个对象的访问。 2,策略
一、什么是代理模式 Proxy模式又叫做代理模式,是构造型的设计模式之一,它可以为其他对象提供一种
[转帖]设计模式-快餐简解-【代理模式】 【代理模式应用场景举例】 比如在玩“极品飞车”这款游戏,
1.定义 代理模式(Proxy),为其他对象提供一种代理以控制对这个对象的方位。 2.结构图 运行时一种可
所谓代理,就是一个人或一个机构代表另一个人或者一个机构采取行动。某些情况下,客户不想或者不能
版权所有 IT知识库 CopyRight © 2009-2015 IT知识库 IT610.com , All Rights Reserved. 京ICP备09083238号