代理模式是什么?
首先搞清楚代理是什么,代理就是代替你去做你做的事情。比如你买东西,你不会直接去厂家买,你都是通过网购、实体店、代购等等途径买到你想要买的东西。这些途径我们都可以称之为代理。
那代理有什么用呢?代理可以让我们最终完成目的的过程中做一些其他的操作。比如网购有满减优惠、实体店能够体验真实产品、代购更便宜等等。这些额外的操作就是代理的作用。
java 代理模式有2种,静态代理和动态代理。一般我们使用动态代理,因为静态代理虽然实现了需求违背开闭原则。
举个栗子。
有一个接口用于购买苹果
厂商实现该接口提供了买苹果的对外方法
在不使用代理类的情况下 我们直接通过厂商购买
假如:有需求静态代理商有折扣优惠 70就可以买100的苹果 而且还升级为红富士
代理类 代理类静态代理实现:
试想一下,如果哪天厂商提供的购买接口发生了变化,那么这些静态代理的类都要做出相应的修改,那将是多么巨大的工作量,违反了开闭原则(对修改关闭,对拓展开放)。动态代理实现。
动态代理类 通过动态代理实现。动态代理常常跟反射一起使用实现想实现的需求。如APP插件化,启动一个未注册的activity时。可以使用动态代理+反射进行activity的伪装启动。
网友评论