设计模式之代理模式

xiaoxiao2021-02-28  60

代理模式是一种处理对象与对象之间关系的模式,代理对象对委托类进行预处理,包括但不限于筛选,预处理,后处理等操作,使用时直接使用代理对象代替委托对象;代理对象和委托对象继承相同的接口,代理对象中持有委托对象;

顶层接口:

public interface Subject { void method(); }

委托类:

public class Source implements Subject{ private Integer number ; public Integer getNumber() { return number; } public void setNumber(Integer number) { this.number = number; } public Source(Integer number) { super(); this.number = number; } @Override public void method() { System.out.println("Source类的method方法被使用"); } }

代理对象:

public class Proxy implements Subject{ private Source source; public Proxy(Source source){ this.source = source; } @Override public void method() { if (source.getNumber() > 10){ source.method(); }else{ System.out.println("未执行Source类的method"); } } } Client类: public class Client { public static void main(String[] args) { Proxy proxy1 = new Proxy(new Source(5)); Proxy proxy2 = new Proxy(new Source(15)); proxy1.method(); proxy2.method(); } }

Client类的执行结果:

未执行Source类的method Source类的method方法被使用

这个实例展示的是代理模式中代理类对委托类的筛选功能,我们使用代理对象中的方法,判断委托类是否符合筛选条件,根据情况调用委托类的方法;

从形式上看,代理模式和装饰者模式的代码很像,都使用实现同一接口并使用组合方式将两个类联系在一起,但是代理模式和装饰者模式的目的是不同的,装饰者是增强作用可以理解为做加法,其中方法的核心功能的实现是被装饰类的,而静态代理是在做减法,对代理对象进行限制或者对方法执行后的结果做处理;所以代理模式和装饰者模式的目的是不同的;

转载请注明原文地址: https://www.6miu.com/read-2624302.html

最新回复(0)