Test類
package com.LearnTest02.practice.Dao;
/*
* 定義一個打折的接口,封裝一個折扣操作,可以根據原價計算折扣之後的價格
* 定義一個不打折的類實現打折接口
* 定義一個八折實現類實現打折接口
* 再定義按比例返現的類實現打折接口
* 定義一個商品類,該類有商品名稱,原價,打折方式等幾個字段,定義一個方法,打折商品折扣之後的價格
*/
public class Test {
public static void main(String[] args) {
Product lenovo = new Product("lenovo", 5800,new TwentyOffDiscount());
lenovo.printInfo();
Product Dell = new Product("Dell", 5800,new NoDiscount());
Dell.printInfo();
Product Nike = new Product("Nike", 580,new CashBackDiscount());
Nike.printInfo();
}
}
Product類
package com.LearnTest02.practice.Dao;
//定義一個商品類,該類有商品名稱,原價,打折方式等幾個字段,定義一個方法,打折商品折扣之後的價格
public class Product {
String name;
double originalprice;
Discountable discountable;
public Product(String name, double originalprice, Discountable discountable) {
super();
this.name = name;
this.originalprice = originalprice;
this.discountable = discountable;
}
public void printInfo() {
System.out.println("商品名稱:" + name + ",原價:" + originalprice
+ ",折扣價:" + discountable.getDiscountable(originalprice));
}
}
Discountable接口
package com.LearnTest02.practice.Dao;
/*
* 打折接口
*/
public interface Discountable {
//根據原價返回折扣之後的結果
double getDiscountable(double originalPrice);
}
NoDiscount類
package com.LearnTest02.practice.Dao;
/*
* 不打折
*/
public class NoDiscount implements Discountable{
//原價返回
@Override
public double getDiscountable(double originalPrice) {
return originalPrice;
}
}
TwentyOffDiscount類
package com.LearnTest02.practice.Dao;
/*
* 八折
*/
public class TwentyOffDiscount implements Discountable {
@Override
public double getDiscountable(double originalPrice) {
return originalPrice*0.8;
}
}
CashBackDiscount類
package com.LearnTest02.practice.Dao;
/*
* 按比例返現
*/
public class CashBackDiscount implements Discountable {
@Override
public double getDiscountable(double originalPrice) {
if(originalPrice >= 300) {
return originalPrice-50;
}else if(originalPrice >= 200) {
return originalPrice-25;
}else {
return originalPrice;
}
}
}
結果爲: