Heim > Java > javaLernprogramm > Hauptteil

Java Design Patterns-Strategiemuster

高洛峰
Freigeben: 2017-01-19 16:24:11
Original
1532 Leute haben es durchsucht

Beginnen Sie auf der Grundlage von OO ernsthaft mit dem Erlernen von Designmustern! Designmuster sind im Java-Design unerlässlich!

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);
  } 
}
Nach dem Login kopieren

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 );
    }   
      
  }
 
}
Nach dem Login kopieren

Market.java

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

Discountable.java

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

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);
      
  
  }
  
}
Nach dem Login kopieren

Mehr Java-Designs für Bei Artikeln zum Strategiemodell beachten Sie bitte die chinesische PHP-Website!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage