最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會(huì)員登陸 & 注冊(cè)

Spring學(xué)習(xí)筆記——靜態(tài)動(dòng)態(tài)代理

2020-07-30 08:48 作者:某個(gè)峙祁  | 我要投稿



##代理
-靜態(tài)代理
-動(dòng)態(tài)代理


####靜態(tài)代理
角色分析:
抽象角色:一般會(huì)使用接口或者抽象類解決
真實(shí)角色:被代理的角色
代理角色:代理角色,代理真實(shí)角色后,我們一般會(huì)做一些附屬操作
客戶:訪問(wèn)代理對(duì)象的人


代碼步驟:
1.接口
```java
public interface Rent {
? ?public void rent();
}
```
2.真實(shí)角色
```java
public class Host implements Rent{
? ?public void rent() {
? ? ? ?System.out.println("房東租房");
? ?}
}
```
3.代理角色
```java
public class Proxy implements Rent {
? ?private Host host;
? ?public Proxy(){

? ?}
? ?public Proxy(Host host){
? ? ? ?this.host=host;
? ?}

? ?public void rent() {
? ? ? ?seeHouse();
? ? ? ?hetong();
? ? ? ?fare();
? ? ? host.rent();
? ?}

? ?//看房
? ?public void seeHouse(){
? ? ? ?System.out.println("中介帶你看房 ");
? ?}
? ?//收中介費(fèi)
? ?public void fare(){
? ? ? ?System.out.println("收中介費(fèi)");
? ?}
? ?//簽合同
? ?public void hetong(){
? ? ? ?System.out.println("簽合同");
? ?}

}
```
4.客戶端訪問(wèn)代理角色
```java
public class Client {
? ?public static void main(String[] args) {
? ? ? ?Host host = new Host();
? ? ? ?Proxy proxy = new Proxy(host);
? ? ? ?proxy.rent();

? ?}
}
```


代理模式的好處:
? ?可以使真實(shí)角色操作更加純粹,不用去關(guān)注一些公共業(yè)務(wù)
? ?公共也就交給代理角色,實(shí)現(xiàn)了業(yè)務(wù)分工
? ?公共業(yè)務(wù)發(fā)生擴(kuò)展的時(shí)候,方便集中管理
缺點(diǎn):
? ?一個(gè)真實(shí)角色就會(huì)產(chǎn)生一個(gè)代理角色,代碼量會(huì)翻倍,開發(fā)效率會(huì)變低。


####動(dòng)態(tài)代理

-動(dòng)態(tài)代理和靜態(tài)代理角色一樣
-動(dòng)態(tài)代理的代理類是動(dòng)態(tài)生成的,不是直接寫好的
-動(dòng)態(tài)代理分為兩大類:基于接口的動(dòng)態(tài)代理,基于類的動(dòng)態(tài)代理
? ?基于接口--jdk動(dòng)態(tài)代理
? ?基于類:cglib
? ?java字節(jié)碼實(shí)現(xiàn):javasist
? ?
-需要了解的兩個(gè)類proxy :代理 , lnvocationHandler :調(diào)用處理程序


```java
public class ProxyInvocationHandler implements InvocationHandler {
? ?public Object target;
? ?//set構(gòu)造方法
? ?public void setTarget(Object target) {
? ? ? ?this.target = target;
? ?}

? ?//生成得到代理類
? ?public Object getProxy(){
? ? ? ?return Proxy.newProxyInstance(this.getClass().getClassLoader(),target.getClass().getInterfaces(),this);
? ?}

? ?//處理代理實(shí)例并返回結(jié)果
? ?public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
? ? ? ?seehous();
? ? ? ?//動(dòng)態(tài)代理的本質(zhì),就是使用反射機(jī)制實(shí)現(xiàn)
? ? ? ?return method.invoke(target, args);
? ? ? ?}
? ?public void seehous(){
? ? ? ?System.out.println("中介看房子");
? ?}

}
```





##裝飾者模式
裝飾者模式 裝飾者模式,動(dòng)態(tài)地將責(zé)任附加到對(duì)象上。若要擴(kuò)展功能,裝飾者提供了比繼承更加有彈性的替代方案。

? 可以使用兩種方式給一個(gè)類或者對(duì)象添加行為。
? ?????一是使用繼承。繼承是給一個(gè)類添加行為的比較有效的途徑。通過(guò)使用繼承,可以使得子類在擁有自身方法的同時(shí),還可以擁有父類的方法。但是使用繼承是靜態(tài)的,在編譯的時(shí)候就已經(jīng)決定了子類的行為,我們不便于控制增加行為的方式和時(shí)機(jī)。?
? ?????二是使用關(guān)聯(lián)。組合即將一個(gè)對(duì)象嵌入到另一個(gè)對(duì)象中,由另一個(gè)對(duì)象來(lái)決定是否引用該對(duì)象來(lái)擴(kuò)展自己的行為。這是一種動(dòng)態(tài)的方式,我們可以在應(yīng)用程序中動(dòng)態(tài)的控制。?
? ? ? ? ? ? 與繼承相比,關(guān)聯(lián)關(guān)系的優(yōu)勢(shì)就在于不會(huì)破壞類的封裝性,且具有較好的松耦合性,可以使系統(tǒng)更加容易維護(hù)。但是它的缺點(diǎn)就在于要?jiǎng)?chuàng)建比繼承更多的對(duì)象。




Spring學(xué)習(xí)筆記——靜態(tài)動(dòng)態(tài)代理的評(píng)論 (共 條)

分享到微博請(qǐng)遵守國(guó)家法律
广德县| 阳东县| 偏关县| 萨嘎县| 皋兰县| 巴马| 岐山县| 竹山县| 邛崃市| 房山区| 类乌齐县| 婺源县| 五大连池市| 新闻| 麟游县| 淄博市| 沁源县| 天水市| 澎湖县| 巴马| 黄龙县| 汉源县| 慈利县| 玉山县| 华容县| 绩溪县| 兴安县| 五常市| 溧阳市| 仙居县| 徐州市| 通榆县| 景泰县| 枣强县| 长武县| 来凤县| 乐清市| 洮南市| 江油市| 晋宁县| 黄山市|