题目:
所谓代理模式,是指客户端(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);}@Overridepublic 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()+"买了新车,交易结束!");elseSystem.out.println(p.getUsername()+"钱不够,不能购买新车!");}}
以上就是 PTA-6-47 购买汽车-代理模式 的全部内容了,希望能对你有所帮助!