软件编程
位置:首页>> 软件编程>> java编程>> Java设计模式之Strategy模式

Java设计模式之Strategy模式

作者:hebedich  发布时间:2023-11-21 03:58:22 

标签:Java,设计模式,Strategy模式

基于有了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);

}

}


0
投稿

猜你喜欢

手机版 软件编程 asp之家 www.aspxhome.com