链表设计模式

原创 2013年12月04日 09:45:01
public interface Filter {
	String doFilter(String str);
}

public class FaceFilter implements Filter {

	@Override
	public String doFilter(String str) {
		String r = str.replace(":)", "^V^");
		return r;
	}

}

public class HTMLFilter implements Filter {

	public String doFilter(String str) {
		String  r = str.replace('<', '[')
					   .replace('>', ']');
		return r;
	}
}

public class SesitiveFilter implements Filter {

	@Override
	public String doFilter(String str) {

		String r = str.replace("被就业", "就业")
					  .replace("敏感", "mingan");
		return r;
	}

}

import java.util.ArrayList;
import java.util.List;

public class FilterChain implements Filter{

	List<Filter> filters = new ArrayList<Filter>();
	
	public FilterChain addFilter(Filter filter){
		this.filters.add(filter);
		return this;
	}
	
	public String doFilter(String str){
		String r = str;
		for(Filter f : filters){
			r = f.doFilter(r);
			System.out.println(f);
		}
		return r;
	}
}
 
public class MsgProcessor {
	private String msg;
	FilterChain fc;

	public String getMsg() {
		return msg;
	}

	public void setMsg(String msg) {
		this.msg = msg;
	}

	public FilterChain getFc() {
		return fc;
	}

	public void setFc(FilterChain fc) {
		this.fc = fc;
	}
	
	public String process(){
		return fc.doFilter(msg);
	}
} 

public class Main {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		String msg = "大家好:),<script>,敏感,被就业,网络授课没有感觉,因为看不见大家伙儿";
		MsgProcessor mp = new MsgProcessor();
		mp.setMsg(msg);
		FilterChain fc = new FilterChain();
		fc.addFilter(new HTMLFilter())
		  .addFilter(new SesitiveFilter());
		
		FilterChain fc2 = new FilterChain();
		fc2.addFilter(new FaceFilter());
		
		fc.addFilter(fc2);
		
		mp.setFc(fc);
		String result = mp.process();
		System.out.println(result);
		
	}
}
 

 

C 语言设计模式(三) 双链表

在C 语言中双链表的实现,已经有很多经典的实现,下面的代码,从 android 中摘取,事实上这段代码可能 google 的人最初从linux 的代码中学得,其实设置到了极限,都达到了设计的完美,那么...
  • free2o
  • free2o
  • 2013年05月05日 17:14
  • 808

【CDP-云设计模式】第8章,1.队列链表模式(Queuing Chain Pattern)

要解决的问题:如果对运行在多个系统上的相关进程(例如,在图像处理过程中,上传、存储、图像转码、创建缩略图等等顺序操作)执行顺序处理,往往会因为系统间联系过于紧密而造成性能瓶颈。当出现故障时,这种紧密的...
  • QXK2001
  • QXK2001
  • 2016年09月16日 22:16
  • 569

设计模式之--迭代器模式(自定义迭代器与STL::find()配合查找链表元素)

以前看了好多STL的源码,总以为自己对STL的迭代器理解够深刻了,今天试着写了一下,因为刚开始没有重载operator==一直编译不过,唉,代码还是敲过一遍好,并不是眼睛看多了自己真的就熟悉了。 ...

C++多态:从虚表指针到设计模式

多态是面向对象语言的一种高级特性。而又由于C++既面向底层又
  • cyfcsd
  • cyfcsd
  • 2016年05月17日 21:17
  • 1553

设计模式列表

本文旨在列出常见设计模式的关系结构以及分类,后面会针对每种设计模式进行单独的说明。 设计模式之间的关系图设计模式的六大原则1、开闭原则(Open Close Principle)开闭原则就是说对扩展开...
  • PKWind
  • PKWind
  • 2016年12月04日 01:10
  • 295

MySQL分表实现上百万上千万记录分布存储的批量查询设计模式

我们知道可以将一个海量记录的 MySQL 大表根据主键、时间字段,条件字段等分成若干个表甚至保存在若干服务器中。   唯一的问题就是跨服务器批量查询麻烦,只能通过应用程序来解决。谈谈在Java中的解...

黑盒测试用例设计模式-判定表(上)

黑盒测试设计模式-判定表法(上)        判定表是分析和表达多种输入条件下系统执行不同动作的工具。将复杂的逻辑关系和多种条件组合的情况表达的清晰明了。判定表通常由四个部分组成: 1.条件桩:列出...

iOS开发那些事-表视图UI设计模式

软件设计中有设计模式,在UI设计方面也有设计模式。由于表视图的应用在iOS中极其广泛,本节向大家介绍表视图中两个UI设计模式:分页模式和下拉刷新(Pull-to-Refresh)模式。这两种模式已经成...

23个设计模式列表

创建型模式 1. Abstract Factory. 2提供一个创建一系列相关或相互依赖对象的接口,而无须指定它们具体的类。2. Builder 2 将一个复杂对象的构建与它的表示分离,使得同样的构建...

设计模式简表

  • 2008年01月14日 14:04
  • 204KB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:链表设计模式
举报原因:
原因补充:

(最多只允许输入30个字)