设计模式-责任链模式
小于 1 分钟
一、简单示例 将一个接口多个实现,一个逻辑类将接口封装到集合中 初始化时将子类实现添加到集合中,循环执行集合则按顺序执行
import java.util.LinkedList;
import java.util.List;
/**
* 接口
*/
interface ChainFilter {
void doFilter(String str);
}
/**
* 实现类1
*/
class ChainA implements ChainFilter {
@Override
public void doFilter(String str) {
System.out.println("AAA");
}
}
/**
* 实现类2
*/
class ChainB implements ChainFilter {
@Override
public void doFilter(String str) {
System.out.println("BBB");
}
}
/**
* 逻辑类-关键点(子类实现添加到接口集合中)
*/
class ChainFiltersTemplate {
private List<ChainFilter> chainFilters;
public List<ChainFilter> getChainFilters() {
return chainFilters;
}
public void addChainFilters(ChainFilter chainFilter) {
if (chainFilters == null) {
chainFilters = new LinkedList<>();
}
chainFilters.add(chainFilter);
}
}
/**
* 测试示例
*/
public class Demo {
public static void main(String[] args) {
//初始化时将顺序定义好
ChainFiltersTemplate template = new ChainFiltersTemplate();
template.addChainFilters(new ChainA());
template.addChainFilters(new ChainB());
template.addChainFilters(new ChainB());
//循环执行责任链
List<ChainFilter> chainFilters = template.getChainFilters();
for (ChainFilter chainFilter : chainFilters) {
chainFilter.doFilter("参数");
}
}
}