常用十种设计模式——代理模式

代理模式:

一)静态代理 实现方式:

a) 为真实类和代理类提供的公共接口或抽象类。(租房)

b) 真实类,具体实现逻辑,实现或继承a。(房主向外租房)

c) 代理类,实现或继承a,有对b的引用,调用真实类的具体实现。

d) 客户端,调用代理类实现对真实类的调用。(租客租房)

二)动态代理 实现方式:

a) 公共的接口(必须是接口,因为Proxy类的newproxyinstance方法的第二参数必须是个接口类型的Class)

b) 多个真实类,具体实现的业务逻辑。

c) 代理类,实现InvocationHandler接口,提供Object成员变量,和Set方法,便于客户端切换。

d) 客户端,获得代理类的实例,为object实例赋值,调用Proxy.newproxyinstance方法在程序运行时生成继承公共接口的实例,调用相应方法,此时方法的执行由代理类实现的Invoke方法接管。 jdk动态代理使用的局限性: 通过反射类Proxy和InvocationHandler回调接口实现的jdk动态代理,要求委托类必须实现一个接口,但事实上并不是所有类都有接口,对于没有实现接口的类,便无法使用该方方式实现动态代理。


©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容