代理模式--介绍、应用及代码

所谓代理,就是一个人或者一个机构代表另一个人或者另一个机构采取行动。在一些情况下,一个客户不想或者不能够直接引用一个对象,而代理对象可以在客户端和目标对象之前起到中介的作用。

代理模式给某一个对象提供一个代理对象,并由代理对象控制对原对象的引用。

代理模式四角色:抽象角色、真实角色、黄牛、你

实例:买不到火车票,找黄牛去火车站给你买票。

上面这个例子,你就是“执行角色”,黄牛就是“代理角色”,火车站是“真实角色”,买票称为“抽象角色”!

买票是种行为,谁买票不知道,所以是抽象角色;

只有在火车站才能买票,而且不管谁买票都得在火车站买,它真实存在的;

本来是你自己去买票的,但是你找了黄牛,所以黄牛是你的代理对象;而且你只需要买票,但是黄牛除了买票还有很多行为,黄牛将你需要买票的行为进行了封装;

真正要买票的是你自己,所以这个动作得你发起。

如果这个例子还看不懂,建议加强JAVA基本功学习,尤其是类、接口、对象之间的关系。

代码如下:

//抽象角色--买票
public interface Subject {
	public abstract void maipiao();
}
//代理角色--黄牛
public class RealSubject implements Subject {

	@Override
	public void maipiao() {
		// TODO Auto-generated method stub
		System.out.print(this.getClass().getName()+":");
		System.out.println("买票");
	}

}
//真实角色--火车站
public class ProxySubject implements Subject {

	private Subject subject;
	 
	RealSubject(Subject subject){
        this.subject = subject;
    }
 
	@Override
    public void maipiao(){
		inStation();
        this.subject.maipiao();
        outStation();
    }
 
    private void inStation(){
        // Other codes
    	System.out.print(this.getClass().getName()+":");
    	System.out.println("黄牛收你钱进火车站买票");
    }
    
    private void outStation(){
        // Other codes
    	System.out.print(this.getClass().getName()+":");
    	System.out.println("黄牛买到票出火车站把票给你");
    }

}
//执行角色--你
public class Hello {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Subject sub=new RealSubject(new ProxySubject());
		sub.maipiao();
	}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值