PTA-6-47 购买汽车-代理模式

题目:

        所谓代理模式,是指客户端(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 购买汽车-代理模式  的全部内容了,希望能对你有所帮助!

你可能感兴趣的:(代理模式,java,开发语言,经验分享)