基于有了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);
-
- }
- }
复制代码 |