java 23种常用设计模式之代理模式(Proxy)

本文通过一个生动的例子解释了代理模式的概念及其实现方式,并通过代码展示了如何利用代理模式为原有方法增加额外的功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

病怏怏地睡不着,还是继续码字吧!

代理模式,作用如其名,就是做代理的。就比如你开了一个格子铺,有好多格子,可以买不同的商品,客户要买什么不用直接找厂家,直接在你这就买得到,这个过程你就是这些商品的代理Proxy,代表厂家把商品卖给需要的顾客。这么一看,这不就是黄牛吗?是的,和黄牛差不多,但是绝对有他存在的必要。一个顾客一般不止需要一类商品,但是一个厂家一般都是产一类产品的,就比如生产文具的一般不会在一个厂里也生产化妆品,但是对顾客来说,我需要文具,我也需要化妆品,爱学习也爱化妆呀。那黄牛就有机会了,顾客要什么,给钱就行了,我帮你搞定厂家。黄牛代理不同厂家的商品,顾客直接找黄牛买就行了。

下面我们来看一下代码怎么实现:

厂家:

package com.freedom.proxy;

public interface Factory {
	
	public void sell();

}
顾客:

package com.freedom.proxy;

public class Customer implements Factory {

	@Override
	public void sell() {
		System.out.println("Customers go shopping,Factory sells. ");

	}

}
黄牛代理:

package com.freedom.proxy;

public class Proxy implements  Factory {

	private Customer customer;
	public Proxy(){
		super();
		this.customer = new Customer();
	}
	
	@Override
	public void sell() {

		Before();
		customer.sell();
		After();
		
	}
	
	private void Before(){
		System.out.println("Before proxy");
	}
	
	private void After(){
		System.out.println("After proxy");
	}

}
test:

package com.freedom.proxy;

import org.junit.Test;

public class TestProxy {

	@Test
	public void test() {

		Factory factory = new Proxy();
		factory.sell();
	
	}

}
/*
运行结果:
Before prox<pre name="code" class="java">Customers go shopping,Factory sells .
After proxy
*/

 

小结:如果已有的方法在使用的时候需要对原有的方法进行改进,此时有两种办法:

1、修改原有的方法来适应。这样违反了“对扩展开放,对修改关闭”的原则。

2、就是采用一个代理类调用原有的方法,且对产生的结果进行控制。这种方法就是代理模式。

使用代理模式,可以将功能划分的更加清晰,有助于后期维护!


源码下载:http://download.youkuaiyun.com/detail/github_22022001/8314195


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值