题目:
所谓代理模式,是指客户端(Client)并不直接调用实际的对象,而是通过调用代理(Proxy),来间接的调用实际的对象。
已知有如下Buy_car接口,请编写其客户端子类People类为委托类,以及代理类ProxySale类,具体要求如下。
已有的接口定义如下:
interface Buy_car{
public void buy_mycar();
}
需要编写Buy_car接口的子类People:
子类People实现接口Buy_car:
(1)添加3个私有属性:现金 cash(int), 是否贵宾 vip(boolean),用户名username(String);
(2)添加三参构造,初始化三个属性。
(3)覆写buy_mycar()方法,输出信息“。。。要买车”。例如:Tom要买车
(4)添加三个属性的getter方法。
需要编写代理类ProxySale:
设计一个代理类ProxySale,实现接口Buy_car:
(1)添加1个私有属性People对象。
(2)添加一参构造,初始化People对象。
(3)覆写buy_mycar()方法,方法里面要判断用户是否为VIP,是就可以直接买车;如果不是VIP则判断现金是否够50000元以上(包含50000),够就可以直接买车;如果不够就不能买车。
已有的Main类定义:
/* 请在这里填写答案 */
public class Main {
public static void main(String[] args) {
Buy_car buy1=new ProxySale(new People(0,true,"Tom"));
Buy_car buy2=new ProxySale(new People(60000,false,"Jack"));
Buy_car buy3=new ProxySale(new People(40000,false,"Rose"));
buy1.buy_mycar();
buy2.buy_mycar();
buy3.buy_mycar();
}
}
根据题目要求,代码实现如下:
class People implements Buy_car {
private int cash;
private boolean vip;
private String username;
public People(int cash,boolean vip,String username) {
this.setCash(cash);
this.setUsername(username);
this.setVip(vip);
}
@Override
public void buy_mycar() {
System.out.println(this.getUsername()+"要买车");
}
public void setCash(int cash) {
this.cash = cash;
}
public void setVip(boolean vip) {
this.vip = vip;
}
public void setUsername(String username) {
this.username = username;
}
public int getCash() {
return cash;
}
public boolean isVip() {
return vip;
}
public String getUsername() {
return username;
}
}
class ProxySale implements Buy_car{
private People p;
ProxySale(People p) {
this.p=p;
}
public void buy_mycar() {
if(p.isVip()==true)
System.out.println(p.getUsername()+"是vip,可以直接购买新车!");
else if(p.getCash()>=50000 && p.isVip()==false)
System.out.println(p.getUsername()+"买了新车,交易结束!");
else
System.out.println(p.getUsername()+"钱不够,不能购买新车!");
}
}
以上就是 PTA-6-47 购买汽车-代理模式 的全部内容了,希望能对你有所帮助!