<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    爪哇一角

    共同探討STRUTS#HIBERNATE#SPRING#EJB等技術
    posts - 3, comments - 6, trackbacks - 0, articles - 99
      BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理

    代理模式

    Posted on 2009-01-20 17:26 非洲小白臉 閱讀(1174) 評論(0)  編輯  收藏 所屬分類: 模式
    代理模式應用場景舉例
    比如在玩“極品飛車”這款游戲,如果游戲者手中的金錢達到了一定的數量就可以到車店買一部性能更高的賽車,那么這個賣車的“車店”就是一個典型的“汽 車廠家”的“代理”,他為汽車廠家“提供賣車的服務”給有需求的人士。從面向對象的方面考慮,“銷售汽車的代理”也是一個對象,那么這個對象也具有一定的 狀態,在軟件項目中這個對象也具有管理財務進銷存的基本功能,那么在設計時就要以面向OOP編程的思想來考慮軟件的類結構,這個銷售汽車的代理也是一個類 了。

    代理模式解釋
    類型:結構模式
      對一些對象提供代理,以限制那些對象去訪問其它對象。

    代理模式UML圖


    代理模式-JAVA代碼實現
    新建一個買車的接口:
    package buy_car_package;

    public interface buy_car_package {

        
    public void buy_car();
    }


    新建一個people人類,具有買車的行為,所以實現接口buy_car_package:

    package buy_car_imple;

    import buy_car_package.buy_car_package;

    public class people implements buy_car_package {

        
    private int cash;
        
    private String username;

        
    public int getCash() {
            
    return cash;
        }

        
    public void setCash(int cash) {
            
    this.cash = cash;
        }

        
    public String getUsername() {
            
    return username;
        }

        
    public void setUsername(String username) {
            
    this.username = username;
        }

        
    public void buy_car() {
            System.out.println(username 
    + "買了一臺新車");
        }

    }


    people類不能擁有車,必須經過proxy代理類的認證,符合條件之后才可以擁有車輛,新建一個代理,這個代理類來考察當前的people是否有資格進行買車:

    package buy_car_imple;

    import buy_car_package.buy_car_package;

    public class proxy_buy_car_imple implements buy_car_package {

        
    private people people;

        
    public people getPeople() {
            
    return people;
        }

        
    public void setPeople(people people) {
            
    this.people = people;
        }

        
    public void buy_car() {
            
    if (people.getCash() > 3000) {
                System.out.print(
    "汽車商店幫:");
                people.buy_car();
            } 
    else {
                System.out.println(people.getUsername() 
    + "金錢不夠,請繼續比賽!");
            }
        }

    }


    最后創建一個客戶端,用來模擬買車的行為:

    package run_main;

    import buy_car_imple.people;
    import buy_car_imple.proxy_buy_car_imple;

    public class run_main {
        
    public static void main(String[] args) {
            people people_ref1 
    = new people();
            people_ref1.setCash(
    4000);
            people_ref1.setUsername(
    "高洪巖");

            people people_ref2 
    = new people();
            people_ref2.setCash(
    2000);
            people_ref2.setUsername(
    "巖洪高");

            proxy_buy_car_imple proxy_buy_car_imple 
    = new proxy_buy_car_imple();
            proxy_buy_car_imple.setPeople(people_ref1);
            proxy_buy_car_imple.buy_car();

            proxy_buy_car_imple.setPeople(people_ref2);
            proxy_buy_car_imple.buy_car();

        }
    }


    程序運行結果如下:

    高洪巖花4000塊 買了新車 交易結束
    巖洪高金錢不夠,請繼續比賽
    !

    這樣people就不可能自由的擁有車輛,必須經過proxy的認證之后才可以。
    而代理模式在GOF四人幫的介紹中大體有4種使用情景:
    (1)遠程代理。典型的就是客戶端與webservice使用的情況,客戶端由于是針對OOP編程,而不是針對webservice中的方法進行編 程,所以得在客戶端模擬一下webservice的環境,用proxy來對webservice進行包裝,這樣就可以使用proxy代理類來遠程操作 webservice了。
    (2)虛擬代理。比如你要開發一個大文檔查看軟件,大文檔中有大的圖片,有可能一個圖片有100MB,在打開文件時不可能將所有的圖片都顯示出來,這樣就可以使用代理模式,當需要查看圖片時,用proxy來進行大圖片的打開。
    (3)安全代理。其實也就是本例中所舉的買車的例子,金錢不夠不可以買車!
    (4)智能指引。比如在訪問一個對象時檢測其是否被鎖定等情況。
    主站蜘蛛池模板: 亚洲另类无码一区二区三区| 亚洲国产精品成人综合色在线婷婷 | 亚洲精品在线免费观看视频| 99麻豆久久久国产精品免费| 亚洲线精品一区二区三区| 男女一边摸一边做爽的免费视频| 久久亚洲中文字幕精品一区四 | 亚洲av中文无码乱人伦在线r▽| 国产三级在线免费| 亚洲高清视频在线观看| 91精品全国免费观看含羞草 | 亚洲日韩人妻第一页| 免费国产污网站在线观看不要卡| 免费一级全黄少妇性色生活片 | 亚洲AV男人的天堂在线观看| 成年在线观看免费人视频草莓| 亚洲精品人成网线在线播放va| 波多野结衣久久高清免费| 青娱乐在线视频免费观看| 亚洲男人的天堂在线va拉文| 三上悠亚电影全集免费 | 亚洲欧洲无卡二区视頻| 免费少妇a级毛片人成网| 中国性猛交xxxxx免费看| 亚洲综合成人网在线观看| 成人免费无码视频在线网站| 国产精品亚洲色婷婷99久久精品| 国产亚洲精午夜久久久久久| 7m凹凸精品分类大全免费| 亚洲国产成人精品无码区花野真一| 又色又污又黄无遮挡的免费视| 国产中文字幕在线免费观看| 亚洲中文无码线在线观看| 免费无遮挡无码永久在线观看视频| 日批视频网址免费观看| 亚洲AV一二三区成人影片| 久久青青草原亚洲av无码| 亚洲免费观看在线视频| 成人福利在线观看免费视频| 久久久亚洲AV波多野结衣| 免费日本黄色网址|