javazx 发表于 2019-8-1 01:55:51

【Java源码】Java实现简单责任链模式 github源码

《Java实现简单责任链模式》场景:客户的购房折扣申请,销售、销售经理、销售总监、CEO依次可以批准不同粒度的折扣。

部分java源码:
1、
package com.javazx.cor.handler;

/**
* @author: itmrchen
* @Description: 价格处理人 负责处理客户的折扣请求
* @date 2019/8/1 1:14
*/
public abstract class PriceHandler {
    protected PriceHandler successor;

    public void setSuccessor(PriceHandler successor) {
      this.successor = successor;
    }

    /**
   * 处理折扣请求
   *
   * @param discount
*/
public abstract void processDiscount(float discount);

    /**
   * 创建PriceHandler的工厂方法
   *
   * @return
*/
public static PriceHandler createPriceHandler() {
      PriceHandler sales = new Sales();
      PriceHandler man = new Manager();
      PriceHandler dir = new Director();
      PriceHandler ceo = new Ceo();
      sales.setSuccessor(man);
      man.setSuccessor(dir);
      dir.setSuccessor(ceo);
      return sales;
    }
}


2、
package com.javazx.cor.handler;

/**
* @author: itmrchen
* @Description: 销售 可以批准5%以内的折扣
* @date 2019/8/1 1:19
*/
public class Sales extends PriceHandler {
    @Override
    public void processDiscount(float discount) {
      if (discount <= 0.05) {
            System.out.format("%s批准了折扣:%.2f%n", this.getClass().getName(), discount);
      } else {
            successor.processDiscount(discount);
      }
    }
}

3、
package com.javazx.cor.handler;

/**
* @author: itmrchen
* @Description:销售经理可以批准30%以内的折扣
* @date 2019/8/1 1:24
*/
public class Manager extends PriceHandler {
    @Override
    public void processDiscount(float discount) {
      if (discount <= 0.3) {
            System.out.format("%s批准了折扣:%.2f%n", this.getClass().getName(), discount);
      } else {
            successor.processDiscount(discount);
      }
    }
}

4、
package com.javazx.cor.handler;

/**
* @author: itmrchen
* @Description: 销售总监可以批准40%以内的折扣
* @date 2019/8/1 1:26
*/
public class Director extends PriceHandler {
    @Override
    public void processDiscount(float discount) {
      if (discount <= 0.4) {
            System.out.format("%s批准了折扣:%.2f%n", this.getClass().getName(), discount);
      } else {
            successor.processDiscount(discount);
      }
    }
}

5、
package com.javazx.cor.handler;

/**
* @author: itmrchen
* @Description:CEO有权拒绝超过55%的折扣
* @date 2019/8/1 1:28
*/
public class Ceo extends PriceHandler {
    @Override
    public void processDiscount(float discount) {
      if (discount <= 0.55) {
            System.out.format("%s批准了折扣:%.2f%n", this.getClass().getName(), discount);
      } else {
            System.out.format("%s拒绝了折扣:%.2f%n", this.getClass().getName(), discount);
      }
    }
}


6、
package com.javazx.cor;

import com.javazx.cor.handler.PriceHandler;

/**
* @author: itmrchen
* @Description: 客户请求折扣
* @date 2019/8/1 1:32
*/
public class Customer {
    private PriceHandler priceHandler;

    public void setPriceHandler(PriceHandler priceHandler) {
      this.priceHandler = priceHandler;
    }

    public void requestDiscount(float discount) {
      priceHandler.processDiscount(discount);
    }

    public static void main(String[] args) {
      Customer customer = new Customer();
      customer.setPriceHandler(PriceHandler.createPriceHandler());
      customer.requestDiscount(0.01f);
    }
}






github地址:https://github.com/itmrchen/springPro   位置在 springPro\src\main\java\com\javazx\cor包下面





maxy 发表于 2019-12-24 18:58:36

棒棒哒!!很不错!!

随想 发表于 2019-12-27 06:57:20

棒棒哒!!很不错!!

zhoujianjian 发表于 2019-12-31 11:37:51

java我来看一下

虔陌 发表于 2020-1-15 21:12:12

我能看看吗

junlong 发表于 2020-1-17 15:00:57

多学习一下多学习一下多学习一下

WeiApp 发表于 2020-1-28 06:41:02

真是好资料

希腊神话 发表于 2020-2-16 20:23:15

不错 支持下

luji641 发表于 2020-2-27 20:23:33

学习学习再学习

Isa 发表于 2020-3-6 23:14:56

谢谢分享,先看看
页: [1] 2 3 4 5 6 7 8 9 10
查看完整版本: 【Java源码】Java实现简单责任链模式 github源码