码迷,mamicode.com
首页 > 其他好文 > 详细

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

时间:2014-10-03 18:22:44      阅读:194      评论:0      收藏:0      [点我收藏+]

标签:style   blog   color   ar   java   sp   div   c   log   

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

 

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

标签:style   blog   color   ar   java   sp   div   c   log   

原文地址:http://www.cnblogs.com/DreamDrive/p/4005069.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!