看看这个问题该怎么解决(有酬金)

img

//打折接口
interface Discount {
Double pay();
}
//商品抽象类
public abstract class Merchants implements Discount{
public Double weight;

public  Double price;

public Merchants(Double weight, Double price) {
    this.weight = weight;
    this.price = price;
}

public static void main(String[] args) {
    Merchants[] merchants =  new Merchants[5];
    merchants[0] =new Daily(3.1,5.7);
    merchants[1] =new Daily(60.7,9.9);
    merchants[2] =new Appliance(7.6,9.9);
    merchants[3] =new Appliance(3.00,700.0);
    merchants[4] =new Appliance(6.7,300.0);
    for (Merchants merchant : merchants) {
        Double pay = merchant.pay();
        System.out.println(merchant.getClass().getName() +"=====" +pay);
    }
}

@Override
public Double pay() {
    double totalPrice = weight * price;
    return totalPrice;
}

}
//家电类
class Appliance extends Merchants {
public Appliance(Double weight, Double price) {
super(weight, price);
}

 @Override
public Double pay() {
    Double pay = super.pay();
    if (pay>2000){
        pay*=0.80;
    }
    return  pay;
}

}
//日用品类
class Daily extends Merchants{
public Daily(Double weight, Double price) {
super(weight, price);
}

@Override
public Double pay() {
    Double pay = super.pay();
    if (pay>500){
        pay*=0.85;
    }
    return pay;
}

}

这个用继承与多态实现,主要是打折规则是怎么样的呢?

一个循环不就完事了吗

这个阿,这个先打开设计模式学习一下,然后学一下uml,好我们先
看看有几个规则,有几个规则就画几个类
然后给它取个名字阿,这个叫算法类,也可以说打折类。
阿,现在我们要把他们用起来,怎么用呢,用if-else吗,太不可扩展了
我们用策略模式+工厂模式,将类的创建延迟到子类,又将决策交给策略。
策略咋整呢,好整,我们整一个map,来记录每个类名与规则的匹配关系,用配置文件进行读取。
嗯越来越像样了,我们再整个命令模式
把这个规则阿,抽象成命令。
你学废了吗

这个阿,这个先打开设计模式学习一下,然后学一下uml,好我们先
看看有几个规则,有几个规则就画几个类
然后给它取个名字阿,这个叫算法类,也可以说打折类。
阿,现在我们要把他们用起来,怎么用呢,用if-else吗,太不可扩展了
我们用策略模式+工厂模式,将类的创建延迟到子类,又将决策交给策略。
策略咋整呢,好整,我们整一个map,来记录每个类名与规则的匹配关系,用配置文件进行读取。
嗯越来越像样了,我们再整个命令模式
把这个规则阿,抽象成命令。