Rumah > Java > javaTutorial > Java设计模式之Strategy模式

Java设计模式之Strategy模式

高洛峰
Lepaskan: 2017-01-19 16:24:11
asal
1603 orang telah melayarinya

基于有了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);
  } 
}
Salin selepas log masuk

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 );
    }   
      
  }
 
}
Salin selepas log masuk

Market.java

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

Discountable.java

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

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);
      
  
  }
  
}
Salin selepas log masuk

更多Java设计模式之Strategy模式相关文章请关注PHP中文网!

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan