基于有了OO的基础后,开始认真学习设计模式!设计模式是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);
 - 	}
 - 	
 - 	
 - 	
 - 	
 - }
 
  复制代码     				    				            	            	
            	            	
            	    				                	
            		                - 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 );
 -         }        
 - 		
 - 	}
 - 	
 - 	
 - }
 
  复制代码     				    				            	            	
            	            	
            	    				                	
            		                - package strategy;
 - /**
 -  * 
 -  * @author Andy
 -  *
 -  */
 - public class Market {
 - 	
 - 	/**
 - 	 * 对可打折的一类事物进行打折
 - 	 * @param apple
 - 	 */
 - 	public static void discountSell(Discountable d) {
 - 		d.discountSell();
 - 		
 - }
 - }
 
  复制代码     				    				            	            	
            	            	
            	    				                	
            		                - package strategy;
 - /**
 -  * 
 -  * @author Andy
 -  *
 -  */
 - public interface Discountable {
 - 	public void discountSell();
 - }
 
  复制代码     				    				            	            	
            	            	
            	    				                	
            		                - 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);
 - 		
 - 	}
 - }
 
  复制代码 |