Proxy-Exercise

在代理模式中,我们使用代理对象来代替对真实对象(real object)的访问,这样就可以在不修改原目标对象的前提下,提供额外的功能操作,扩展目标对象的功能。

\---demo
        DynamicProxyDemo.java
        OneService.java
        Service.java
        StaticProxyDemo.java
        TwoService.java

Service.java

接口,提供perform()方法。

OneService.java

实现类,实现perform()方法。

TwoService.java

实现类,实现perform()方法。

StaticProxyDemo.java(静态代理)

静态代理,里面有一个ServiceProxy类,在该类中也重写了perform()方法。在perform()方法中,调用了真实对象的perform()方法,同时新增了一些操作。

但是静态代理有个缺点:一个真实对象要对应一个静态代理对象,代码编写十分繁琐。

DynamicProxyDemo.java(动态代理)

动态代理,创建实现InvocationHandler接口的类,再通过Proxy.newProxyInstance方法创建代理对象,之后便可以通过代理对象调用perform方法。

区别

静态代理需要为每个接口创建代理类,并为每个方法编写代理逻辑,这会导致大量的重复代码。在实际开发中,当涉及到多个类和方法需要类似的代理逻辑时,通过动态代理来实现通常是更好的选择。动态代理通过创建调用处理器(InvocationHandler)、创建代理实例(Proxy.newProxyInstance),然后便可以直接调用代理方法。

暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇