設計模式學習----代理模式

【代理模式解釋】

 

類型:結構模式

 

對一些對象提供代理,以限制那些對象去訪問其它對象。

 

新建一個買車的接口:

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.println(people.getUsername() + "花" + people.getCash()
                    + "塊 買了新車 交易結束");
        } 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();

    }
}

 

people類實現了buy_car_package接口,代理類proxy_buy_car_imple也實現了buy_car_package接口

proxy_buy_car_imple類和people類是關聯關係,proxy_buy_car_imple擁有people

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章