23种设计模式之代理模式

一、代理模式及其作用(静态代理)

  Proxy Pattern(即:代理模式),23种常用的面向对象软件的设计模式之一

    代理模式的定义:

           为其他对象(被代理对象)提供一种代理(代理对象)以控制对这个对象(被代理对象)的访问。在某些情况下,一个对象不适合或者不能直接引用另一个对象,而代理对象可以在客户端和目标对象之间起到中介的作用。

优点:

(1).职责清晰

真实的角色就是实现实际的业务逻辑,不用关心其他非本职责的事务,通过后期的代理完成一件完成事务,附带的结果就是编程简洁清晰。

(2).代理对象可以在客户端和目标对象之间起到中介的作用,这样起到了的作用和保护了目标对象的作用。

(3).高扩展性

结构

一个是真正的你要访问的对象(目标类),另一个是代理对象,真正对象与代理对象实现同一个接口,

  先访问代理类再访问真正要访问的对象。

代理模式简单案例

  • 婚介
  • 房屋中介
  • 经纪人
  • 黄牛

代码:

ZuFangZi.java

public interface ZuFangZi {
  public void lookHouse();
  public void getMoney(double money);
}

FangDong.java

package com.tf.staticproxy;
public class FangDong implements ZuFangZi {
	@Override
	public void lookHouse() {
		System.out.println("看房东的房子");
	}
	@Override
	public void getMoney(double money) {
	System.out.println("房东收到的房租:"+money);
	}
}

Zhongjie.java

package com.tf.staticproxy;
public class Zhongjie implements ZuFangZi {
	//传入被代理对象
	private FangDong fangDong;
	public Zhongjie(FangDong fangDong) {
		super();
		this.fangDong = fangDong;
	}
	@Override
	public void lookHouse() {
		System.out.println("中介准备带客户看房");
	   fangDong.lookHouse();
	   System.out.println("中介带客户看房完毕");
	}
	@Override
	public void getMoney(double money) {
     double	zhongjieMoney=3000;
     System.out.println("中介收取中介费"+zhongjieMoney);
	 fangDong.getMoney(money-zhongjieMoney);
	}
}

People.java

package com.tf.staticproxy;
public class People {
public static void main(String[] args) {
	FangDong fangdong  = new FangDong();
	Zhongjie zhongjie = new Zhongjie(fangdong);
	zhongjie.lookHouse();
	zhongjie.getMoney(10000);
}
}

总结:代理类和被代理类实现相同的接口

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值