解决这个问题:在多个模块要插入一段功能,比方,在不同业务处理模块中,都须要检查用户是否登录,假设不使用代理的话,每添加一个模块,就须要添加非常多代码。

比方,除了推断是否登录,假设还须要添加一个记录日志的功能,那么每一个模块都须要又一次添加一个函数。

以下我们利用静态代理的功能来解决这个需求。

代码结构

功能函数接口

package itbuluoge.proxy;

public interface ICompent {

	public void bussiness1();
public void bussiness2();
public void bussiness3();
}

代理类

package itbuluoge.proxy;

public class ProxyCompent implements ICompent{

	private ICompent ic;

	public ProxyCompent(ICompent ic)
{
this.ic=ic;
} public void validateUser()
{
System.out.println("验证用户...");
}
public void bussiness1() {
// TODO Auto-generated method stub
validateUser();
ic.bussiness1();
} public void bussiness2() {
// TODO Auto-generated method stub
validateUser();
ic.bussiness2();
} public void bussiness3() {
// TODO Auto-generated method stub
validateUser();
ic.bussiness3();
} }

被代理类

package itbuluoge.proxy;

public class Compent implements ICompent{

	public void bussiness1() {
// TODO Auto-generated method stub
System.out.println("业务1");
} public void bussiness2() {
// TODO Auto-generated method stub
System.out.println("业务2");
} public void bussiness3() {
// TODO Auto-generated method stub
System.out.println("业务3");
} }

測试类

package itbuluoge.proxy;

public class Test {

	/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
ProxyCompent myProxy=new ProxyCompent(new Compent());
myProxy.bussiness1();
myProxy.bussiness2();
myProxy.bussiness3();
} }

输出结果

我们能够看到,假设我们须要在非常多个添加共同的函数的时候,仅仅须要在代理类中添加就可以。并且能够看出,代理类中仅仅有自己的业务逻辑,没有其它的不论什么服务,服务都定义在被代理类本身。

java的静态代理的更多相关文章

  1. Java基础-静态代理与动态代理比较

    JAVA的静态代理与动态代理比较 静态代理类: 由程序员创建或由特定工具自动生成源代码,再对其编译.在程序运行前,代理类的.class文件就已经存在了.动态代理类: 在程序运行时,运用反射机制动态创建 ...

  2. JAVA的静态代理与动态代理比较--转载

    扩展:http://www.ibm.com/developerworks/cn/java/j-lo-proxy1/JAVA的静态代理与动态代理比较 一.概念 代理模式是常用的Java 设计模式,它的特 ...

  3. java的静态代理、jdk动态代理和cglib动态代理

    Java的代理就是客户端不再直接和委托类打交道,而是通过一个中间层来访问,这个中间层就是代理.使用代理有两个好处,一是可以隐藏委托类的实现:二是可以实现客户与委托类之间的解耦,在不修改委托类代码的情况 ...

  4. Java 的静态代理 动态代理(JDK和cglib)

    转载:http://www.cnblogs.com/jqyp/archive/2010/08/20/1805041.html JAVA的动态代理 代理模式 代理模式是常用的java设计模式,他的特征是 ...

  5. java的静态代理和动态代理(jdk、cglib)

    一.代理模式 代理的概念来自于设计模式中的代理模式,先了解一下代理模式 1.结构图 2.参与者 Subject:接口,定义代理类和实际类的共用接口 RealSubject:实际类,实现Subject这 ...

  6. Java:静态代理 and 动态代理

    代理模式是常用的设计模式,其特征是代理类与委托类具有相同的接口,在具体实现上,有静态代理和动态代理之分.代理类与委托类之间通常会存在关联关系,一个代理类的对象与一个委托类的对象关联,代理类的对象本身并 ...

  7. java中静态代理,动态代理知识的补充

    文章转载自:http://blog.csdn.net/jialinqiang/article/details/8950989 一.Java动态代理 相对于静态代理的代理类在编译时生成(.class文件 ...

  8. java之静态代理和动态代理

    我们以几个问题,来开始我们今天的学习,如果下面几个问题,你都能说出个一二,那么恭喜你,你已经掌握了这方面的知识.1,什么是代理模式?2,Java中,静态代理与动态代理的区别?3,Spring使用的是J ...

  9. java之静态代理与动态代理

    先看看静态代理是如何操作的 定义接口: public interface Person { public void sayHello(String content, int age); public ...

  10. java中静态代理和动态代理

    一.概述 代理是一种模式,提供了对目标对象的间接访问方式,即通过代理访问目标对象.如此便于在目标实现的基础上增加额外的功能操作,前拦截,后拦截等,以满足自身的业务需求,同时代理模式便于扩展目标对象功能 ...

随机推荐

  1. 为什么学微信小程序开发

    微信小程序是什么? 触手可得,不用安装,不体验过自己是想不到的 ---张小龙 小程序是一种不需要下载安装即可使用的应用,它实现了应用“触手可及”的梦想,用户扫一扫或者搜 一下即可打开应用.也体现了“用 ...

  2. telnet查看memcached运行参数说明

    在Linux/Windows系统中启动memcached的命令请查看http://weilingfeng98.iteye.com/admin/blogs/1741179 启动完memcached服务器 ...

  3. RMAN传输表空间迁移数据

    实验环境: 源数据库:oracle 10g(Release 10.2.0.1.0) 目标数据库:oracle 10g(Release 10.2.0.1.0) 待传输的表空间:TEST 1.在tes ...

  4. 基于纹理边缘抑制的轮廓和边界检测(Contour and Boundary Detection)

    基于纹理边缘抑制的轮廓和边界检测(Contour and Boundary Detection) kezunhai@gmail.com http://blog.csdn.net/kezunhai 一幅 ...

  5. c#语句:分支

    六.分支:(一)if (表达式){}说明:1.表达式,就是用来返回bool形的表达式.2.if的小括号后面千万不要加分号 (二)if(表达式){}else{} 例:1.输入年龄,大于等于18显示成年, ...

  6. 【Java基础】构造方法调用构造方法

    从一个程序开始: class dog { private String name; private String color; private int age; dog(String name) // ...

  7. OCMOCM

    14年,OCM考试费12000 15年,考试费19800 对于我来说,1,2年之后是否换工作还是个未知数 在本单位考这个貌似没什么用处,工资也不会突然就涨很多 跳槽的话,专门做数据库感觉压力还挺大 年 ...

  8. Oracle如何只显示重复数据,或不显示重复数据

    思路:  一.对所有字段进行分组并计数  二.计数大于1的就显示 select * from 表名 group by 字段1,字段2 having count(*)>1 (显示重复)

  9. CSS 四个样式表格

    1. 单像素边框CSS表格 这是一个很常用的表格样式. 源代码: <!-- CSS goes in the document HEAD or added to your external sty ...

  10. [Linked List]Insertion Sort List

    Total Accepted: 59422 Total Submissions: 213019 Difficulty: Medium Sort a linked list using insertio ...