### 代理模式
為其他對象提供一種代理以控制對這個對象的訪問(摘抄)
對于代理模式,我感覺自己是有自己的理解的,而且實際編碼中也用得比較多,所以讀這一章的時候,感覺有些理解和作者也許還有點不一樣,代理模式真的是實際編碼過程中用得非常多的模式,簡單的話來說就是把自己要做的事情交給別人來做,這就相當于別人代替你做了某事,這樣的理解應該算代理吧
書上的代碼是這樣的
~~~
public interface S
{
void Operation();
}
public class A implements S
{
@Override
public void Operation() {
//A的操作
}
}
public class Proxy implements S
{
A a = new A();
@Override
public void Operation(){
a.Operation();
}
}
public static void main()
{
Proxy proxy = new Proxy();
proxy.Operation();
}
~~~
我感覺這樣寫,好處看不到很多,有可能是我一開始對于代理模式的運用就用錯了,但是有一點是我感覺可以理解的,就是這樣子用代理模式對于功能的拓展有用,就是當你的A類已經寫好了,而且不想改動的情況下,需要添加一些額外的功能,這樣寫也許會比較好
我自己平時用代理模式
~~~
public interface S
{
void Operation();
}
public class A implements S
{
@Override
public void Operation() {
//A的操作
}
}
public class A implements S
{
@Override
public void Operation() {
//A的操作
}
}
public class Proxy implements S
{
S s;
public Proxy(S s){
this.s = s;
}
@Override
public void Operation(){
s.Operation();
}
public void special()
{
}
}
~~~
這樣子用呢感覺會靈活很多,對于功能的添加上會比直接用子類向上轉型好很多,同時也可以根據傳入的類,去調用相應的方法,例如取數據的方法有很多種,但是處理數據的方法只有一種,那么這樣寫的話,你用不同的方法取數據就只需要傳入不同的類就可以了
書上最后總結,代理模式分為四種,遠程代理,虛擬代理,安全代理,智能代理,但是又沒有用代碼來解釋這些的區別和實際用途,感覺看著有點暈。。。
### 總結
其實看到這,真的感覺設計模式的很多東西都是相通的,例如這個代理模式達到的效果,也可以通過前面幾種模式來達到,所以在實際編碼的使用中真的不能生搬硬套,而是要學會理解每一種設計模式的原理,和他的思想,靈活的應用,因為實際編碼以我們這種低水平的人,用不出那種十分正規的模式,也許寫的模式四不像,但是只要能達到我們想要達到的目的,滿足設計模式的原則,誰又能說這種設計模式是不是好的呢?
所以說沒有最好的設計模式,只有最適合的設計模式!
- 前言
- (1)代碼無錯就是優?——簡單工廠模式
- (2)商場促銷——策略模式
- (3)&(4)&(5) 設計模式原則
- (6)穿什么有這么重要?——裝飾模式
- (7)為別人做嫁衣——代理模式
- (8)雷鋒依然在人間——工廠方法模式
- (9)簡歷復印——原型模式
- (10)考題抄錯會做也白搭——模板方法模式
- (11)迪米特法則
- (12)牛市股票還會虧錢?—— 外觀模式
- (13)好菜每回味不同——建造者模式
- (14)老板回來,我不知道——觀察者模式
- java實現事件委托
- (15)就不能不還DB嗎?—— 抽象工廠模式
- (16)無盡加班何時休息——狀態模式
- (17)在NBA我需要翻譯——適配器模式
- (18)如果再回到從前——備忘錄模式
- (19)分公司=部門——組合設計模式
- (20)想走?可以!先買票——迭代器模式
- (21)有些類也需計劃生育——單例模式
- (22)手機軟件何時統一——橋接模式
- (23)烤羊肉串引來的思考——命令模式
- (24)加薪非要老總批?——職責鏈模式
- (25)世界需要和平——中介者模式
- (26)項目多也別傻做——享元模式
- (28)男人和女人——訪問者模式