这里有新鲜出炉的Java并发编程示例,程序狗速度看过来!
java 是一种可以撰写跨平台应用软件的面向对象的程序设计语言,是由Sun Microsystems公司于1995年5月推出的Java程序设计语言和Java平台(即JavaEE(j2ee), JavaME(j2me), JavaSE(j2se))的总称。
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);
- }
- }
来源: http://www.phperz.com/article/17/1109/360381.html