一、前话
因为想要实现一个简单过滤的功能,又加上过滤的类别比较多。当时第一次写的时候我把方法里面写了好多个list参数,一次性实现过滤,但是感觉太凌乱了、感觉好别扭、并且额外添加一些过滤的修改也很麻烦,要改很多东西。然后就百度了很多,觉得用责任链这个去实现过滤我觉得挺好的。想做个笔记吧,欢迎吐槽
二、责任链的理解
责任链模式是一种对象的行为模式。在责任链模式里,很多对象由每一个对象对其下家的引用而连接起来形成一条链。请求在这个链上传递,直到链上的某一个对象决定处理此请求,或者处理到最后。这使得可以动态地重新组织和分配责任。
我理解链有这些特性:1.有下环的一个链接。
2.链接可以随意的组合(组合很灵活),也可以随意的切断了。
优点:这样的话我觉得整个流程很清晰,扩展和组织我觉得也很好
缺点:当链条长的话中间可能有一部分是没用的,配置也可以形成死链
三、文件过滤的链条
我的基本思路是:1.遍历所有的文件得到一个list
|
2.过滤得到一些匹配后缀文件
|
3.过滤得到一些日期范围
|
.............版本信息、其他的一些属性......................
==============================================================
我的这个链是一走到底。(过滤顺序可以随便配置了)
但是过滤的属性内容有时候不定:例如后缀了这些”.exe/.txt"并且属性是动态的
当时想通过xml配置过滤类路径去反射,动态的过滤配置的?但是实例化参数感觉不好弄,就先放下了。
这算是第一次真正的去找一个设计模式实现想要的东西。
1.定义了一个抽象类
public abstract class FindFiles{ private FindFiles nextFilter; //next的get/set方法 public FindFiles getNextFilter(){return ..} public void getNextFilter(){..} //判断next是否存在 public bool isNext(){nextFilter==null?false:true;} //主方法 public abstract List<T>getMatchFileList(List<T> fileList); }
2.就是属性继承了实现方法
public SuffixsFilter extends FindFiles{ private List<string>suffixList; get/set public List<T>getMatchFileList(List<T> fileList){ 1.把不符合要求的移除掉。 2.if(isNext()){ return nextFilter.getMatchFileList(..); }else{ return fileList; } } }
好处:想在添加新的过滤方案可以立即加进去,要改动的地方就很少了。
四、处理情况
因为用的可能是过滤情况,所以处理就一路狂奔了。
另一些要求例如权限等级的访问等也可以这样处理:当前能处理的就处理,处理不了的往下(级别高)发送中间充当一个传达的作用。
相关推荐
JAVA-设计模式-行为型模式-责任链模式
c++设计模式-行为型模式-责任链模式;qt工程;c++简单源码; 责任链(Chain of Responsibility)模式的定义:为了避免请求发送者与多个请求处理者耦合在一起,于是将所有请求的处理者通过前一对象记住其下一个对象的...
责任链模式是一种行为设计模式,它允许我们把请求沿着处理者对象的链式结构进行传递,直到某个对象处理这个请求。这种模式使得我们能够将请求的发送者与接收者解耦,同时也允许在运行时动态地改变处理顺序或添加新的...
在“设计模式专题之(十五)责任链模式---设计模式责任链模式示例代码(python--c++)”中,我们可以期待看到两种编程语言——Python和C++——实现的责任链模式。这两种实现都旨在展示如何通过构建处理请求的对象链来...
设计模式通常分为三类:创建型模式(如工厂模式、抽象工厂模式、单例模式、建造者模式、原型模式),结构型模式(如适配器模式、装饰器模式、代理模式、桥接模式、组合模式、外观模式、享元模式)以及行为型模式(如...
代理模式(Proxy Pattern)、单例模式(Singleton Pattern)、工厂方法...责任链模式(Chain of Responsibility Pattern)、访问者模式(Visitor Pattern)、状态模式(State Pattern)、原型模式(Prototype Pattern...
设计模式(Design pattern)代表了最佳的实践,通常被有经验的面向对象的软件开发人员所采用。设计模式是软件开发人员在软件开发过程中面临的一般问题的解决方案。这些解决方案是众多软件开发人员经过相当长的一段...
责任链模式(Chain of Responsibility Pattern)是一种行为设计模式,它使你能在不明确指定接收者的情况下,将请求沿着处理者对象的链式结构进行传递。每个处理者对象都包含对下一个处理者的引用,如果某个处理者...
- 责任链模式(Chain of Responsibility):避免将请求的发送者和接收者耦合在一起,使得多个对象都有可能处理请求。 - 命令模式(Command):将请求封装为一个对象,以便使用不同的请求、队列请求、或者支持可...
责任链模式(Chain of Responsibility Pattern)是一种行为设计模式,它允许将请求沿着处理链进行传递,直到有一个处理程序处理它为止。在 Java 中实现责任链模式通常需要以下几个步骤: 定义处理器接口 首先,...
在 Java 开发中,责任链模式是一种重要的行为设计模式,它可以解耦请求的发送者和接收者,使多个对象都有机会处理请求。本文将详细介绍责任链模式的意图、解释、编程示例、适用场景、实际应用、优点和权衡。同时,还...
- 责任链模式:将请求沿着处理者链传递,直到被某个对象处理。 - 命令模式:将请求封装为一个对象,以便使用不同的请求、队列请求或记录请求。 - 解释器模式:提供一个语言的文法表示,并定义了一个接口,用于...
职责链模式(Chain of Responsibility)是一种行为设计模式,它的核心思想是将一系列处理请求的对象组织成一条链,每个对象都包含对请求的处理或传递的责任。在C++中实现职责链模式,我们可以创建一个抽象处理器类,...
2. **设计模式分类**:设计模式通常分为三类:创建型模式(如工厂方法、抽象工厂、单例、建造者、原型)、结构型模式(如适配器、桥接、装饰、组合、代理、外观、享元)和行为型模式(如责任链、命令、解释器、迭代...
设计模式11-行为模式-责任链、命令模式 设计模式12-解释器模式 设计模式13-迭代器模式 设计模式14-中介者模式、备忘录模式 设计模式15-观察者模式、状态模式 设计模式16-策略模式、模板方法、访问者 此PPT实例便于...
包括责任链模式(Chain of Responsibility)、命令模式(Command)、解释器模式(Interpreter)、迭代器模式(Iterator)、中介者模式(Mediator)、备忘录模式(Memento)、观察者模式(Observer)、状态模式...
创建型模式,共五种:工厂方法模式、抽象工厂模式、...行为型模式,共十一种:策略模式、模板方法模式、观察者模式、迭代子模式、责任链模式、命令模式、备忘录模式、状态模式、访问者模式、中介者模式、解释器模式。
在“责任链模式--解读P2P”中,我们可以看到这种模式是如何应用于点对点(Peer-to-Peer,简称P2P)网络中的。 P2P网络是一种分布式网络架构,其中每个节点(即对等方或“peer”)既是服务的消费者也是服务的提供者...
行为型模式主要涉及对象间责任分配和通信,比如策略模式(Strategy)、观察者模式(Observer)、职责链模式(Chain of Responsibility)、迭代器模式(Iterator)、命令模式(Command)和模板方法模式(Template ...
行为型模式则关注对象之间的交互和职责分配,如策略模式(Strategy)、观察者模式(Observer)和责任链模式(Chain of Responsibility)等,它们有助于提高代码的灵活性和可扩展性。 在C#中,设计模式的实现往往...