【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包下面
棒棒哒!!很不错!! 棒棒哒!!很不错!! java我来看一下 我能看看吗 多学习一下多学习一下多学习一下 真是好资料 不错 支持下 学习学习再学习 谢谢分享,先看看