企业如何通过vue小程序开发满足高效运营与合规性需求
567
2022-11-26
用责任链方式来挑选单词
题目如下::
给定若干个单词,选出符合以下条件的单词;
1:包含ss
2:包含a
3:以ks结尾.
如果你想的是一个for循环,然后是一个if(...&&...&&)那就不用说了 这些代码怎么维护?
如果新加一种判定条件,例如要长度大于7
再或者我想吧条件1改成包含kk.
所以就引入了下面这个方法 用责任链的方式来处理 代码如下
package searchword;public abstract class Filter { protected Filter successor; public void setFilter(Filter successor){ this.successor=successor; } public abstract void execu(String text); }
package searchword;public class IsContain extends Filter { private String word; public IsContain(String word) { this.word = word; } /** * @param text 要判定的单词 * */ public void execu(String text) { if (text.indexOf(word) >= 0) { if (this.successor != null) this.successor.execu(text); else { System.out.println(text); } } }}
package searchword;public class IsEnd extends Filter{ private String word; public IsEnd(String word){ this.word=word; } /** * @param text 要判定的单词 * */ public void execu(String text) { if(text.endsWith(word)) if(this.successor!=null) this.successor.execu(text); else { System.out.println(text); } }}
package searchword;import java.util.ArrayList;import java.util.List;public class Client { public static void main(String[] args) { List
测试结果如下
ssakkendks
责任链的优势在于避免将请求发送者与接收者耦合在一起,让多个对象都有机会接收请求,,将这些对象连接成一条链,并且沿着这条链传递请求,直到有对象处理它为止,
我们似乎大功告成了,但是又有新的问题,上面的各个条件之间的关系是与 如果我想再加一个条件 单词以end结尾或者以ks结尾 如何? 代码怎么改?
有一种思路 那就是
package searchword;import java.util.List;public class OrIsEnd2 extends Filter { private List
package searchword;import java.util.ArrayList;import java.util.List;public class Client { public static void main(String[] args) { List
测试结果
ssakkendks ssakkendbb
上面的方法似乎不错, 但是还有一种更好的办法 就是利用管道模式 来处理这个问题.
下一次 咱们再谈谈管道模式
参考资料
管道过滤器模式(Pipe and Filter)与组合模式
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~