文章分类 | 推荐文章 | 最新文章 | 热点文章 | 最新软件 | 精品软件 | 下载排行 | 推荐下载 | 免费看大片 | WPS | 杀毒软件
清风网络
首 页 软件下载 网络学院 数码学院
QQ 电脑入门 游戏 操作系统 图形处理 办公软件 媒体动画 精文荟萃 工具软件 网络编程 程序开发 网络技术 认证考试 网站建设 文章专栏
当前位置:清风网络学院网络编程PHP使用Decorate模式实现留言版词汇处理
精品推荐
特别推荐
·菜鸟学PHP之Smarty入门
·PHP环境安全配置教程
·PHP入门指导:如何学习PHP?
·Php+Mysql注入专题
·PHP:实现给上传图片加水印的程序代码
·PHP动态网站开发中常用的8个小技巧
·PHP初学者:配置Apache服务器并且设置DNS
·初学PHP指导:php.ini 配置详细选项
·好文分享:PHP入门的学习方法
·急速搭建属于自己的Discuz!6论坛
·PHP入门:初学来看配置文件PHP.INI的中文注释
·php.ini配置,php.ini 中的 php-5.2.0 配置指令详解
·总结:一些PHP学习过程中的心得和经验
·新手入门:JSP初学者必须掌握的语法点
·PHP技巧:PHP脚本编程中的文件系统函数库
·详细讲解PHP编程中分页显示的制作
·成为PHP编程高手应该遵循的三个准则
·谈谈生成静态页面的一些经验
·新手入门:详细解述七个软件开发的原则
·简单的webservice开发例子
热点TOP10
·一个Struts实现分页,增删改查,Tiles,国际化的DEMO
·Windows XP下PHP+MySQL环境搭建
·JDBC连接Oracle数据库常见问题及解决方法
·简单的webservice开发例子
·MyEclipse+struts+Hibernate配置开发
·Php+Mysql注入专题
·菜鸟学PHP之Smarty入门
·php:树形结构的算法
·彻底解决中文名文件下载和下载文件内容乱码问题
·PHP 会话 (Session) 使用入门
·跟我来学PHP5:session会话的使用和分析
·急速搭建属于自己的Discuz!6论坛
·解决tomcat频繁死掉的问题
·学习教程:Java Annotation 高级应用
·表单验证类 Validator for PHP
·解密ZEND加密后的PHP
·用PHP模拟登陆
·用PHP实现多级树型菜单
·动态网页制作学习:PHP预定义变量
·PHP+Access设计留言版实战

使用Decorate模式实现留言版词汇处理

日期:2007年7月8日 作者: 查看:[大字体 中字体 小字体]


  装饰者模式以对客户端透明的方式动态的为对象增加责任。此模式提供了一个比继承更为灵活的替代方案来扩展对象的功能,避免了继承方法产生的类激增问题,而且更方便更改对象的责任。

  我们经常要为某一些个别的对象增加一些新的职责,并不是全部的类。例如我们系统留言反馈板块中可能需要过滤用户输入留言中的一些词汇(例如政治敏感词汇、色情词汇等)、还可能对用户输入留言进行一些修饰(例如对用户输入的URL自动加上超链接、对用户输入的UBB代码进行转换的)、还可能将用户输入的内容定时发送的网管的邮箱中等等。如果使用类继承的方式进行设计,我们可能要设计一个接口

  BodyContentFilterIntf,然后在由BodyContentFilterIntf派生出SensitiveWordContentFilter、HtmlContentFilter、SendEmailContentFilter等类。但是如果还要要求同时能过滤敏感词汇并能进行修饰、或者过滤敏感词汇之后把用户输入的留言发送到网管邮箱等等,这样就要增加SensitiveWordHtmlContentFilter、SensitiveWordSendEmaillContentFilter等类,这种方式导致了子类瀑发式的产生。

  一个灵活的方法是将过滤器嵌入另一个过滤器中,由这个过滤器来负责调用被嵌入过滤器的方法并执行自己的过滤器方法。我们称这个嵌入的过滤器为装饰(Decorator)。这个装饰与过滤器接口一致。装饰将请求向前转到到另一个过滤器,并且可能能转发前后执行一些额外的动作(如修饰、发送邮件),透明性使你可以递归的嵌套多个装饰,从面可以添加任意多的功能。

  其实java中的过滤器模式应用非常多,典型的就是IO的Stream操作。在IO处理中,Java将数据抽象为流(Stream)。在IO库中,最基本的是InputStream和OutputStream两个分别处理输出和输入的对象,但是在InputStream和OutputStream中之提供了最简单的流处理方法,只能读入/写出字符,没有缓冲处理,无法处理文件,等等。

  LineNumberInputStream、BufferInputStream、StringBufferInputStream等提供各种不同服务的类只要组合起来就可以实现很多功能,如下:

FilterInputStream myStream=new LineNumberInputStream
( new BufferInputStream( new StringBufferInputStream( myStringBuffer)));

  多个的Decorator被层叠在一起,最后得到一个功能强大的流。既能够被缓冲,又能够得到行数,这就是Decorator的威力!

  下面是我们的类静态图

使用Decorate模式实现留言版词汇处理


  我们定义一个接口BodyContentFilterIntf 来定义所有过滤器要实现的方法:

public interface BodyContentFilterIntf {
 public String filtContent(String aContent) throws ContentFilterException;
}

  这个接口中只有一个方法filtContent,将要过滤的留言传给aContent参数,filtContent对aContent进行一些处理(如装饰URL、UBB等),然后将处理后的字符串做为返回值返回;如果留言没有通过过滤(如含有敏感词汇等),只要抛出自定义ContentFilterException异常即可。

  下面是一个可能的一个过滤器(保证输入的字数多于50):

public class LengthContentFilter

implements BodyContentFilterIntf {
 private BodyContentFilterIntf bodyContentFilterIntf = null;
 public HtmlContentFilter(BodyContentFilterIntf aFilter)
 {
  bodyContentFilterIntf = aFilter;
 }

 public String filtContent(String aContent) throws ContentFilterException {
  String l_Content = aContent;
  If (bodyContentFilterIntf!=null)
   _Content = bodyContentFilterIntf .filtContent(l_Content);
  if (aContent.length()<=50)
   throw new ContentFilterException (“输入的字数不能少于50!”);
    return aContext;
 }
}

  这是另一个过滤器(伪码,用来实现向网管邮箱发送邮件) public class SendEmailContentFilter

implements BodyContentFilterIntf {

[1] [2] 下一页 




上一篇:日前和时间的操作

下一篇:使用WEBLOGIC PORTAL规则引擎中实现动态业务逻辑

使用Decorate模式实现留言版词汇处理 相关文章:
·GHOST使用方法(图解)
·Vista系统使用技巧总结
·为什么iexplore.exe在打开网页时CPU使用会100%?
·轻松做画家!用Photoshop把照片处理成逼真的素描画
·Photoshop将肖像照片处理为超酷个性海报
·如何实现局域网打印机共享
·DataTable控件的使用
·QQ空间导航代码最新版使用方法
·推荐:漂亮的手机上使用的墙纸图片分享下载
·腾讯QQ号码使用完全指南
使用Decorate模式实现留言版词汇处理 相关软件:
·黑客视频教程 VMware虚拟机的安装和使用
·黑客视频教程-灰鸽子远控使用教程
·FLASH 8中文使用手册
·使用GPMC随心所欲管理组策略
·Adobe Photoshop CS 2 简体中文使用指南
·英语四级 星火英语-15篇文章贯通四级词汇 MP3
·asp留言板
·Auto CAD R14高级使用教程
·photoshop数码照片处理与特效制作
·精通英语词汇8000 [mp3]

特别声明:本站除部分特别声明禁止转载的专稿外的其他文章可以自由转载,但请务必注明出处和原始作者。文章版权归文章原始作者所有。对于被本站转载文章的个人和网站,我们表示深深的谢意。如果本站转载的文章有版权问题请联系编辑人员,我们尽快予以更正。
[打印本页] [关闭窗口] 转载请注明来源:http://www.vipcn.net
| 帮助(?) | 版权声明 | 友情连接 | 关于我们 | 信息发布
Copyright 2007 www.vipcn.net All Rights Reserved. 鄂ICP备05000083号Powered by:viphot