责任链模式

    xiaoxiao2021-04-13  25

    责任链模式

    /** * 价格处理人,负责处理客户折扣申请 */ public abstract class PriceHandler { // 直接后继,用于传递请求 protected PriceHandler successor; public void setSuccessor(PriceHandler successor) { this.successor = successor; } /** * 处理折扣申请 */ public abstract void processDiscount(float discount); /** * 工厂方法创建对象 */ public static PriceHandler createPriceHandler() { PriceHandler sales = new Sales(); PriceHandler manager = new Manager(); PriceHandler ceo = new CEO(); //指定直接后继 sales.setSuccessor(manager); manager.setSuccessor(ceo); return sales; } } /** * 销售,可以批准5%以内的折扣 */ public class Sales extends PriceHandler{ @Override public void processDiscount(float discount) { if(discount <= 0.05){ System.out.format("销售批准了折扣: %.2f",discount); } else { successor.processDiscount(discount); } } } /** * 销售经理,可以批准30%以内的折扣 */ public class Manager extends PriceHandler{ @Override public void processDiscount(float discount) { if(discount <= 0.3){ System.out.format("销售经理批准了折扣: %.2f",discount); } else { successor.processDiscount(discount); } } } /** * CEO,可以批准5%以内的折扣 */ public class CEO extends PriceHandler{ @Override public void processDiscount(float discount) { if(discount <= 0.55){ System.out.format("CEO批准了折扣: %.2f",discount); } else { System.out.format("CEO拒绝了折扣: %.2f",discount); } } } /** * 客户,请求折扣 */ 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()); Random random = new Random(); for (int i = 0; i < 50; i++) { customer.requestDiscount(random.nextFloat()); System.out.println(""); } }

    转载请注明原文地址: https://ju.6miu.com/read-669221.html

    最新回复(0)