//打折接口
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,来记录每个类名与规则的匹配关系,用配置文件进行读取。
嗯越来越像样了,我们再整个命令模式
把这个规则阿,抽象成命令。