首页 > 编程 > Java > 正文

Java设计模式之Strategy模式

2019-11-26 14:03:26
字体:
来源:转载
供稿:网友

基于有了OO的基础后,开始认真学习设计模式!设计模式是java设计中必不可少的!

Apple.java

package strategy;/** *  * @author Andy * */ public class Apple implements Discountable {  //重量  private double weight;  //单价 实际开发中 设计金钱等精确计算都是BigDecimal;    private double price;    //按购买量打折  // private Discountor d = new AppleWeightDiscountor();    //按购买总价打折    private Discountor d = new ApplePriceDiscountor();       public double getWeight() {    return weight;  }     public void setWeight(double weight) {    this.weight = weight;  }     public double getPrice() {    return price;  }     public void setPrice(double price) {    this.price = price;  }  public Apple (double weight,double price ){       super();    this.weight=weight;    this.price=price;  }   @Override  public void discountSell() {     d.discount(this);  }  }

Banana.java

package strategy;/** *  * @author Andy * */public class Banana implements Discountable {  //重量  private double weight;////单价 实际开发中 涉及金钱等精确计算都是用BigDecimal  private double price;     public Banana(double weight, double price) {    super();    this.weight = weight;    this.price = price;  }   public double getWeight() {    return weight;  }     public void setWeight(double weight) {    this.weight = weight;  }     public double getPrice() {    return price;  }     public void setPrice(double price) {    this.price = price;  }   @Override  public void discountSell() {    //打折算法    if(weight < 5) {      System.out.println("Banana未打折价钱: " + weight * price);    }else if(weight >= 5 && weight < 10) {      System.out.println("Banana打八八折价钱: " + weight * price * 0.88 );    }else if(weight >= 10) {      System.out.println("Banana打五折价钱: " + weight * price * 0.5 );    }           }}

Market.java

package strategy;/** *  * @author Andy * */public class Market {     /**   * 对可打折的一类事物进行打折   * @param apple   */  public static void discountSell(Discountable d) {    d.discountSell();}}

Discountable.java

package strategy;/** *  * @author Andy * */public interface Discountable {  public void discountSell();}

Test.java

package strategy;/** *  * @author Andy * */public class Test {     /**   *    * @param args   */   public static void main(String[] args) {//    只能对苹果打折 还不能对通用的一类事物打折 而且都是要卖什么就写什么打折算法 //   其实每类事物打折算法又是不一致的    Discountable d = new Apple(10.3, 3.6);    Discountable d1= new Banana(5.4,1.1);      Market.discountSell(d);      Market.discountSell(d1);        } }

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表