【代理模式解釋】
類型:結構模式
對一些對象提供代理,以限制那些對象去訪問其它對象。
新建一個買車的接口:
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