设计模式 代理模式的简单实现

在我们日常生活中,经常会遇到一些事情:买卖商品,在我们去商店买东西的时候,我们一般都会先咨询商自己需要的物品,然后商家在去仓库取货。去买手机的时候,我们一定会去手机店买,而不是直接去手机产地购买手机。等等诸多类似的事情。仔细分析,你就会发先,他们都有一个共同二队特点,就是客户并没有跟原产地直接接触,而是通过一个称之为“代理”的第三者在间接实现。代理对象在客户和目标对象直接起到了中介的作用,并且可以通过代理对象去调用客户看不见的内容和服务。
代理模式的定义如下:给某一个对象提供一个代理,并由代理对象控制对原对象的引用,代理模式的英文名为:Proxy,它是一种对象结构型模式。
在这里插入图片描述
Proxy :是一个接口(或者抽象类 )。该接口是对象和它的代理所共用的接口
User : 真实主题角色,是实现接口(或抽象类)的类,是真实对象
MyProxy :代理角色,内部包含对真实对象 User 的引用,从而实现可操作的真实对象,它们共同实现了 Proxy ,是“has” 的关系,以便在任何时刻都能替换真实对象 ,同时,代理对象可以在执行真实对象操作时附加 其他的操作,相当于对真实对象进行封装。
ProxyDAO .java

public interface ProxyDAO {
	public void update(Object obj);
}

MyProxy.java

public class MyProxy implements ProxyDAO{
	ProxyDAO proxyDAO;
	public void setProxy(ProxyDAO proxyDAO) {
		this.proxyDAO =proxyDAO ;
	}
	@Override
	public void update(Object obj) {
		System.out.println("更新。。。");
		proxyDAO.update(obj);
	}
}

User.java

public class User implements ProxyDAO{
	@Override
	public void update(Object obj) {
		System.out.println("User更新数据。。。");
	}
}

Test.java

public class Test {
	public static void main(String[] args) {
		MyProxy proxyDao = new MyProxy();
		proxyDao.setProxy(new User());
		proxyDao.update(1);
	}
}

测试结果如下:
在这里插入图片描述
从这里我们就可以发现,我们并没有直接的操作User类就可以实现了它的方法,非常符合设计模式中的开闭原则(对修改关闭,对扩展开放),我们就可以在不改变原有的基础上,增加类似于User类的对象,在实现Proxy接口,就能对其进行间接操作。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值