策略设计模式:把可变的行为抽象出来,形成一个算法簇,这样可以让我们的应用更利于变化,可以根据用户的要求而变化。
//定义一个付款方式的接口
interface PayStyle{
void price();
}
//非会员实现付款方式接口
class FeiPay implements PayStyle{
@Override
public void price() {
System.out.println("全额");
}
}
//普通会员实现付款方式接口
class PBPay implements PayStyle{
@Override
public void price() {
System.out.println("8折");
}
}
//高级会员实现付款方式接口
class GJPay implements PayStyle{
@Override
public void price() {
System.out.println("5折");
}
}
//顾客类有一个设置付款方式的方法,传进来付款方式的接口,用一个接口类型的引用指向传进来的已实现接口的对象。
//然后将已实现接口的方法在顾客类中用pay方法封装起来。
class Customer{
PayStyle pStyle;
public void setPayStyle(PayStyle ps) {
this.pStyle = ps;
}
void pay(){
pStyle.price();
}
}
//测试类
public class CeLueMode {
public static void main(String[] args) {
GJPay gjPay = new GJPay();
PBPay pbPay = new PBPay();
FeiPay feiPay = new FeiPay();
Customer customer = new Customer();
customer.setPayStyle(feiPay);
customer.pay();;
}
}