策略模式反向调用实例

 

package fanxiangdiaoyong;

public class Context {
private String name =null;
private double money=0.0;
private Payment pm=null;
public Context(String name, double money, Payment pm) {
	
	this.name = name;
	this.money = money;
	this.pm = pm;
}
public String getName() {
	return name;
}
public void setName(String name) {
	this.name = name;
}
public double getMoney() {
	return money;
}
public void setMoney(double money) {
	this.money = money;
}
public void pay()
{pm.Pay(this);
}
}
package fanxiangdiaoyong;

public class Context2 extends Context {
private String account;
	public Context2(String name, double money, String account,Payment pm) {
		super(name, money, pm);
		this.account=account;
	}
	public String getAccount() {
		return account;
	}
	public void setAccount(String account) {
		this.account = account;
	}
	

}
package fanxiangdiaoyong;

public interface Payment {
public void Pay(Context con);
}
package fanxiangdiaoyong;

public class RMB implements Payment{

	@Override
	public void Pay(Context con) {
		System.out.println("采用人民币现金支付支付给"+con.getName()+con.getMoney()+"元");
		
	}

}
package fanxiangdiaoyong;

public class Dollar implements Payment{

	@Override
	public void Pay(Context con) {
		System.out.println("采用美元现金支付支付给"+con.getName()+con.getMoney()+"元");
		
	}

}
package fanxiangdiaoyong;

public class Credit implements Payment{

	@Override
	public void Pay(Context con) {
		Context2 con2=(Context2)con;
		System.out.println("采用银行转账支付支付给"+con2.getName()+"的账户"+con2.getAccount()+con2.getMoney()+"元");
		
	}

}
package fanxiangdiaoyong;

public class Test {
public static void main(String args[])
{Payment rmb=new RMB();
Payment dol=new Dollar();
Context ct=new Context("小李",5000,rmb);
ct.pay();
Context ct2=new Context("小王",8000,dol);
ct2.pay();
Payment cd=new Credit();
Context2 ct3=new Context2("老张",6500,"031126",cd);
ct3.pay();
}
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值