静态代理模式:

代理模式:

代理人可以替受代理的人完成一些工作,比如:学校与学生之间的关系来说,学生就好比被被代理类,学生只需要负责上课,写作业,考试等事务,而类似于课程,考试,任课教师的安排等都不需要学生去做,可以交给其学校完成。

静态代理模式的实现要求:

提供两个真实的具体的类,代理类与被代理类;两个类同时实现同一个接口,接口中定义多个抽象方法(提取代理类,被代理各自的行为任务)代理类一定要有被代理对象的引用,为了能在代理类中调用被代理类的重写接口中的方法

举例:

接口-----包含代理人和被代理人需要进行的事务:

package static_assist;public interface affair {//考试void testing();//考试安排void test_schedule();//上课void classing();//课程安排void classing_schedule();//任课教师安排void progamm_teacher();
}

代理人------学校:实现affair接口,并且重写自己能够完成的事务的方法,并产生被代理对象的引用,以便于调用被代理类中重写的方法:

代理人不能完成的事务,需要使用被代理人的引用去调用该事务的方法

package static_assist;public class school implements affair {private student student;//被代理类的引用public school(student student) {this.student=student;}public school() {}@Overridepublic void testing() {student.testing();}@Overridepublic void test_schedule() {System.out.println("学校进行考试安排");}@Overridepublic void classing() {student.classing();}@Overridepublic void classing_schedule() {System.out.println("学校进行上课安排");}@Overridepublic void progamm_teacher() {System.out.println("学校进行任课教师安排");}
}

被代理人----学生:实现affair接口,并且只需要重写自己能够完成的事务的方法即可

package static_assist;public class student implements affair {@Overridepublic void testing() {System.out.println("学生进行考试");}@Overridepublic void test_schedule() {}@Overridepublic void classing() {System.out.println("学生去上课");}@Overridepublic void classing_schedule() {}@Overridepublic void progamm_teacher() {}
}

测试类:

package static_assist;public class Test {public static void main(String[] args) {school school=new school(new student());//产生代理类和被代理类的实例化对象,将被代理类的实例化对象传递到代理类//通过代理类实例化对象调用各个事务方法school.classing_schedule();school.progamm_teacher();school.classing();school.test_schedule();school.testing();}
}

输出:

学校进行上课安排
学校进行任课教师安排
学生去上课
学校进行考试安排
学生进行考试

这种代理模式的好处体现在:代理对象可以做很多被代理对象做不了的事情,代理对象可以专注做自己的事情

java之静态代理模式相关推荐

  1. 浅谈java的静态代理模式

    嗨喽-小伙伴们XX好呀, 本章我们来介绍,java中出现的静态代理模式. 代理,对应于英语单词-----Proxy,从字面上理解,就是在实现代理目标(Target)所有的需求的同时,还能够实现代理目标 ...

  2. 小白都能懂的设计模式 java版 静态代理模式实战练习(超详细)

    静态代理: 角色分析: 抽象角色:一般使用接口或者是抽象类来解决 真实角色:被代理的角色 代理角色:代理真实角色,代理真实角色后,我们一般会做一些附属操作 客户:访问代理对象的人 以一个租房子的例子来 ...

  3. Java从接触到放弃(十五)--线程、多线程、静态代理模式

    Day Fifteen 线程 多任务: 可以理解为一个人同时去干几件事,就好比在上厕所的时候边大号边玩手机,这就是一个多任务的实例.再好比现在很多人中午在吃饭的时候,或者说在吃饭的时候,看一些下饭综艺 ...

  4. java设计模式--工厂模式、静态代理模式、动态代理模式

    工厂模式 代码实现: 步骤一:创建一个接口 Car.java package FactoryMode;public interface Car {public void run(); } 步骤二:创建 ...

  5. Java多线程:静态代理模式

    静态代理模式 要求:有真实角色,代理角色 真实角色和代理角色要实现同一个接口 代理角色要持有真实角色的引用 设计静态代理模式 (1)必须有一个共同使用的接口 1 // 共同的接口 2 public i ...

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

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

  7. 使用静态代理模式实现公用的报表导出功能

    先聊一下什么是代理模式? 代理模式 给某个对象提供一个代理对象,并由代理独享控制对原对象的引用.什么意思呢?代理模式就有点像我们生活中常见的中介. 举个例子,我想买辆二手车,第一种方式是自己去找车源, ...

  8. Java 设计模式之代理模式

    1.静态代理 被代理对象和代理对象都要实现相同的接口或者继承相同的父类. 不需要修改被代理对象就可以实现对功能的扩展,缺点是如果接口发生变化,比如增加新方法,被代理对象和代理对象都需要维护. 1)首先 ...

  9. 模式代码 java中aes_深入浅出:Java中的代理模式

    代理(Proxy)是一种设计模式,提供了对目标对象另外的访问方式;即通过代理对象访问目标对象,用来在系统中对原始的接口进行替换,然后在内部做一些增强处理.代理模式不会破坏系统的原有接口,不去修改原有的 ...

最新文章

  1. php后台图片压缩_php实现等比例压缩图片
  2. 2017春季华为实习生编程题
  3. C++灵活易错特性-02
  4. 汇编编程环境-MASM6.15版下载
  5. 自动化测试和手工测试结果汇总小实践
  6. mysql注入啥意思_【菜鸟学注入】之MySQL报错注入详解
  7. rose服务器系统,Rose HA for windows
  8. 五类/超五类网线与六类/超六类网线的区别及应用
  9. 详解typora配置华为云图床
  10. Python+OpenCV实现实时视频3D换脸
  11. c++调用python详细教程
  12. Aop切面编程原理和Spring实现
  13. 微信小程序开发之文件上传下载应用场景(附Demo源码)
  14. Machin(梅钦/马青)公式计算圆周率π
  15. acm计算机教育汇刊,ACM 全文数据库
  16. Centos透过NFS挂载NAS路径
  17. android面试之郑州面试总结
  18. 电信业务支撑报表系统解决方案
  19. 锁相环(单相+陷波器)入门理解
  20. html+css笔记

热门文章

  1. Hive鲜为人知的宝石-Hooks
  2. python保留字的基本含义-Python保留字总结
  3. html中加长下滑线,css怎么设置下划线的长度?
  4. 振动论坛---MATLAB
  5. B2C电子商务系统研发——概述篇
  6. 播放视频有沙沙的杂音怎么处理?
  7. 文件夹访问被拒绝了怎么办呢?
  8. H5前端开发入门学习(基于vs+vue开发)
  9. 破解高职学院计算机类专业边缘化的问题
  10. C语言用数组实现集合的交集、并集、差集、补集