首页 > 代码库 > [设计模式]静态代理模式
[设计模式]静态代理模式
Subject.java
1 package cn.itcast.proxy;2 3 //定义一个抽象类,代理角色和真实角色都要实现这个共同的抽象类4 public abstract class Subject {5 //定义一个方法,这个方法就好比中介和房东都有向外租房子的方法6 public abstract void request();7 }
RealSubject.java
1 package cn.itcast.proxy;2 3 //这个类好比是真正的房东.实现向外租房子的方法4 public class RealSubject extends Subject{5 public void request() {6 System.out.println("真正的房东向外租房子");7 }8 }
ProxySubject.java
1 package cn.itcast.proxy; 2 3 //这个类是好比是中介(代理房东向外租房子),和房东(RealSubject)共同实现了Subject抽象类(接口) 4 public class ProxySubject extends Subject { 5 //代理类(中介)要有一个真实类(RealSubject)的一个引用 6 private RealSubject realSubject; 7 8 public void request() { 9 this.preRequest();//this就是ProxySubject的一个对象 ProxySubject proxy = new ProxySubject.10 if(null == realSubject){11 realSubject = new RealSubject();12 }13 realSubject.request();//真实角色完成事情14 this.bacRequest();15 }16 //代理对象可以在真实角色完成的前后增加一些自己的方法.17 //就好比中介先要领房客看房(preRequest()方法),18 //然后和房东,房客一起完成租房(request()方法),19 //最后收取房客钱(bacRequest()方法)20 private void preRequest(){21 System.out.println("中介领房客看房子");22 }23 private void bacRequest(){24 System.out.println("中介向房客收钱");25 }26 }
Client.java
1 package cn.itcast.proxy; 2 //这个类就好比是房客要租房子 3 // 4 public class Client { 5 public static void main(String[] args) { 6 Subject porxySubject = new ProxySubject(); 7 porxySubject.request(); 8 } 9 }10 /*11 打印内容:12 中介领房客看房子13 真正的房东向外租房子14 中介向房客收钱15 */
[设计模式]静态代理模式
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。