【代理模式解释】
类型:结构模式
对一些对象提供代理,以限制那些对象去访问其它对象。
新建一个买车的接口:
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