责任链设计模式
1、责任链设计模式有点类似于数据结构中的递归于回溯的两个过程
2、也可以使用面向对象编程对象嵌入对象的方式实现(链表 --> 的作用是建立类之间的关系,C语言使用指针建立地址之前的关系)
代码实现
/**
* 需求:
* 1、 满200减20
* 2、 首次购减20
* 3、 第二单打9折
* .............
*/
public abstract class BaseChain {
protected BaseChain baseChain;
public BaseChain(BaseChain baseChain) {
this.baseChain = baseChain;
}
// 计算方法
public int calculate(int total){
if (this.baseChain != null) {
return this.baseChain.calculate(total);
}
return total;
}
}
public class FullDiscount extends BaseChain {
FullDiscount(BaseChain fullDiscount) {
super(fullDiscount);
}
@Override
public int calculate(int total) {
if (total > 200) {
System.out.println("超出200,立减20");
total = total -20;
}
return super.calculate(total);
}
}
public class NewerDiscount extends BaseChain {
NewerDiscount(BaseChain fullDiscount) {
super(fullDiscount);
}
@Override
public int calculate(int total) {
if (total > 80) {
System.out.println("首次购买,立减20");
total = total -20;
}
return super.calculate(total);
}
}
主要实现的方式
public class MainTestDemo {
private static BaseChain fullDiscount = new FullDiscount(null);
static {
fullDiscount = new NewerDiscount(fullDiscount);
}
public static void main(String[] args) {
System.out.println(fullDiscount.calculate(300));
}
}
来源:CSDN
作者:享知
链接:https://blog.csdn.net/qq_30561643/article/details/104516821