首页 > 其他分享 >静态代理模式

静态代理模式

时间:2022-11-03 14:36:53浏览次数:39  
标签:静态 代理 模式 hello subject public Subject

前言

为某个对象提供一个代理,以控制对这个对象的访问。 代理类和委托类有共同的父类或父接口,这样在任何使用委托类对象的地方都可以用代理对象替代。代理类负责请求的预处理、过滤、将请求分派给委托类处理、以及委托类执行完请求后的后续处理。 

代理接口(Subject)、代理类(ProxySubject)、委托类(RealSubject)

代理接口

public interface Subject {
	String hello();
}

委托类

public class RealSubject implements Subject {
	@Override
	public String hello() {
		try {
			Thread.sleep(2000);
		} catch (InterruptedException e) {
			e.printStackTrace();
		}
		return "hello";
	}
}

静态代理类

public class ProxySubject implements Subject {
	private Subject subject;

	public ProxySubject(Subject subject) {
		this.subject = subject;
	}

	@Override
	public String hello() {
		System.out.println(subject.hello());
		return "hello2";
	}
}

静态代理工厂

public class ProxyFactory {
	public static Subject getInstance(){
		return new ProxySubject(new RealSubject());
	}
}

测试一下

public class ProxyTest {
	@Test
	public void test() {
		Subject subject = ProxyFactory.getInstance();
		System.out.println(subject.hello());
	}
}

执行结果

hello
hello2

静态代理类优缺点

优点:
业务类只需要关注业务逻辑本身,保证了业务类的重用性。这是代理的共有优点。
缺点:
代理对象的一个接口只服务于一种类型的对象,如果要代理的方法很多,势必要为每一种方法都进行代理,静态代理在程序规模稍大时就无法胜任了。 
如果接口增加一个方法,除了所有实现类需要实现这个方法外,所有代理类也需要实现此方法。增加了代码维护的复杂度。

标签:静态,代理,模式,hello,subject,public,Subject
From: https://www.cnblogs.com/ococo/p/16854354.html

相关文章

  • [Maven基础]-- maven的setting.xml配置国内常用静态源
    <?xmlversion="1.0"encoding="UTF-8"?><settingsxmlns="http://maven.apache.org/SETTINGS/1.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"......
  • JDK动态代理学习笔记
    JDK动态代理学习2022.10.23今天在看Java基础的时候,看到Reflect方面,资料提到各种框架离不开Reflect,同时动态代理也依赖于Reflect去随便搜了点动态代理的文章,看了看如何调......
  • 配置Squid代理服务器
    添加双网卡vm1是内网同学vm2是外网通信Squid服务器生成外网网卡配置文件外网网卡设置IP地址然后重启服务查看网卡生效了没修改配置文件开启路由功能更新内核参数开启路由转......
  • ASEMI代理LSIC2SD120A05-力特Sic肖特基二极管
    编辑:llASEMI代理LSIC2SD120A05-力特Sic肖特基二极管型号:LSIC2SD120A05品牌:LITTELFUSE/力特封装:TO-220-2L特性:Sic肖特基二极管正向电流:5A反向耐压:1200V恢复时间:35ns......
  • Django生成静态页面和使用缓存
       生成并使用静态页面importosfromdjango.shortcutsimportrenderfromdjango.template.loaderimportrender_to_stringdefmy_view(request):co......
  • 为什么HTTP代理会出现“返回403 forbidden”
    平时我们在使用HTTP代理的过程中,稍有不慎就会出现各种各样的错误代码,其中“403forbidden”就是常见的一种。它属于HTTP协议中的一个状态码(StatusCode),可以简单的理......
  • HTTP代理究竟是宜没好货还是一分价钱一分货
    我们在HTTP代理选择的时候,不少朋友都会犯难,到底是便宜没好货,一分价钱一分货?还是只买对的,其实代理不一定要买多便宜,也不一定要买多昂贵的。还是之前我们老生常谈......
  • 免费的HTTP代理有什么好处吗
    我们在接手爬虫业务时候,往往需要选择一款适合自己业务的HTTP代理,通常都会选择所谓性价比高的代理,可是真的是性价比越高就越适合我们的业务吗?其实不然。不少朋友,尤......
  • 设计模式之结构型模式
    目录一、适配器模式二、装饰器模式三、代理模式四、外观模式五、享元模式六、桥接模式七、组合模式创建型模式(5个)工厂方法模式、抽象工厂模式、单例模式、建造者模式、原......
  • 设计模式之代理,手动实现动态代理,揭秘原理实现
    开心一刻周末,带着老婆儿子一起逛公园。儿子一个人跑在前面,吧唧一下不小心摔了一跤,脑袋瓜子摔了个包,稀里哗啦的哭道:“爸爸,我会不会摔成傻子!”我指了指我头上的伤痕安......