首页 > 代码库 > [设计模式]静态代理模式

[设计模式]静态代理模式

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     */

 

[设计模式]静态代理模式