学习Java代理模式,这一篇够用了
这篇代理模式的讲解,会通过其概念、特点,最后通过编码实现每个代理模式的使用场景。 什么是代理模式 代理模式是Java语言中一种编程的设计模式。包括两个重要角色:委托类和代理类。代理类可以在调用委托类同时,对委托类的现有功能的基础之上进行扩展。 如何理解这个模式呢?用日常生活中常见的事情通俗的表述就是: 房东把自己需要被出租的房子,交给房产中介,让其帮忙打理后续包括带租客看房、签合同等繁杂流程,房东只需最后通过房子获取利益就行。这个例子中,房东就是委托类,房产中介就是代理类。 在Java开发中,代理分为静态代理和动态代理。 动态代理又分为jdk动态代理和cglib动态代理。 静态代理、动态代理的特点 静态代理 优点:能做到在不修改委托类代码的前提下,还能通过代理类添加新的功能。 缺点:委托类和代理类都是实现了上级父类的接口,一旦父类接口代码变动,委托类和代理类都要维护代码。 动态代理 动态代理中的jdk代理可以解决静态代理中的那个缺点。jdk动态代理的代理类不需要实现父级的接口,但是委托类需要实现父级的接口。 它通过Java反射机制动态生成代理类,不仅简化了编程的工作,并且提高了软件系统的可扩展性。 上面的静态代理和jdk动态代理都必须让委托类实现父级的接口,假如委托类不去实现任何接口,它们两个代理模式就用不了,所以此时cglib动态代理就上位了。 编码实现静态代理 父类的接口 /*