Java设计模式之Strategy模式

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 && 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); } }

相关文章

HashMap是Java中最常用的集合类框架,也是Java语言中非常典型...
在EffectiveJava中的第 36条中建议 用 EnumSet 替代位字段,...
介绍 注解是JDK1.5版本开始引入的一个特性,用于对代码进行说...
介绍 LinkedList同时实现了List接口和Deque接口,也就是说它...
介绍 TreeSet和TreeMap在Java里有着相同的实现,前者仅仅是对...
HashMap为什么线程不安全 put的不安全 由于多线程对HashMap进...