当前位置:首页 » 软件开发
开发技术指南» 文章正文
    引言: 每一位读过GoF的那本著名的设计模式一书的人都会知道Decorator模式。
 

 

 ·在jsp中使用javamail(1)    »显示摘要«
    摘要:  你希望在jsp中建立一个邮件发送收取工具吗?下面将介绍的就是在jsp中建立一个邮件发送收取工具。在这篇文章中你可以了解到javamail api的一些要点以及如何在jsp中使用它。本文中还包括了在jsp中使用javamail的实例。javamail是jsp应用软件中相当强大的api。   阅读这篇文章需要对jsp、javabeans和javamail有一定的初步了解。当然,有关于javamai......
 ·困扰jsp的一些问题与解决方法    »显示摘要«
    摘要:  如今每一个使用servlets的开发者都知道jsp,一种由sun公司发明并花费大量精力加以推行并建构在servlet技术之上的web技术。jsp将servlet中的html代码脱离了出来,从而可以加速web应用开发和页面维护。实际上,由sun发布的官方 "应用开发模型"文档上说得更远: "jsp技术应该被视为标准,而servlets在多数情况下可视为一种补充。" ( section 1.9, ......


Java中Decorate的三种实现方法
每一位读过gof的那本著名的设计模式一书的人都会知道decorator模式.现在,让我们暂时忘记所了解的decorator概念,尝试着从我们的开发经验中去理解decorator模式吧.

  decorator是用于装饰一个事物(或人)的另一个事物(或人).一个decorator直接改变被装饰对象的职责或特征,但是不能改变被装饰对象的自有属性.例如:一个镜框可以装饰图片,化妆品可以装饰女孩的脸等等. 【程序编程相关:全面解析JDBC

【推荐阅读:Jsp与Mysql连接探究查错

  从我们的专业角度来讨论一些存在的实例: 【扩展信息:关于JSP中文问题的解决方法

  1 jscrollpane可以装饰jcomponent的视图部分.jcomponent本身并不会被改变,但是增加了一个新的属性(可滚动).

  2 bufferedinputstream是inputstream的装饰子,本身bufferedinputstream就是一个inputstream,但是它更快,因为提供了对数据的缓存.

  3 考虑一下debugbutton,它与jbutton一样,但是它在被点击时可以向日志文件添加消息.debugbutton是jbutton的装饰子,因为它直接改变了jbutton但并没有改变它的自有属性.

  4 再又如scrolloverbutton,它增加了一个鼠标滑过的行为.当鼠标移出时它是平的,当鼠标经过时它具有一个凸起的边框.很显然,scrolloverbutton也是jbutton的装饰子.

  现在,我们知道decorator可能有三种不同的实现:

  1 继承(inheritance)

  2 封装(wrapper)

  3 外挂(external)

  本文将讨论每一个实现模型,以及它们的优缺点.

  继承

  对于开发人员而言,最直观的decorator实现就是:写一个派生类,它继承自被装饰类,并赋于新的职责.新的职责可以是通过增加方法或是修改已有方法来实现.

public class debugbutton extends jbutton

{

public debugbutton()

{

addactionlistener(new actionlistener()

{

system.out.println("debug message");

});

}

}

  此外,我们也可以用相同的方式来实现scrolloverbutton:不是增加actionlistener,而是增加mouselistener.在mouselistener回调方法中改变jbutton的边框,当mouseentered()被调用时,将边框从empetyborder变为raisedbevelborder.而当mouseexited()方法被调用时,再将边框从raisedbevelborder恢复成empetyborder.

  对于bufferedinputstream,同样实现也是非常简单的.修改每个读数据的方法,让它从内存缓冲区来读取数据.如果缓冲区是空的,它可以通过super.read()方法来获取数据并填充缓冲区.jscrollpane,要实现起来就有点复杂,下面我将讨论为什么它会比较难以用继承的方式来实现.

  讨论一下继承方式实现decorator模式的优点与缺点:

  优点

  1 我们几乎可以用这个方式实现所有的decorator.

  2 使用继承方式实现decorator模式,可以保留被装饰类的原始类型,这一点是非常重要的.
...   下一页
 ·java混淆编译器    »显示摘要«
    摘要:最近发现大家很多问题都涉及到了混淆器的概念,特发此贴,希望在大家的学习过程中有所借鉴。 最近试用了几个java混淆器(java obfuscator),感觉没有一个完全另人满意的, 于是想干脆自己写一个得了。翻了几页java虚拟机规范之后突发奇想,别的混淆器 都是在编译好的byte code上做文章,能不能从源码直接编译成经过混淆的class文 件呢?就这样花了一个多星期的时间写了一个ja......
» 本期热门文章:

©2000-2007 All Rights Reserved. 最佳浏览:1024X768 MSIE