首页Java基础Java源码Java框架设计模式JavaEEJava Web开发视频教程

您现在的位置:首页 >

设计模式

关注我们

优就业官方微信
优就业官方微信扫描二维码,即可与小
U亲密互动
优就业官方微博
优就业官方微博扫码关注,更有精彩活动
等你参与
  • 优就业官方QQ号

    优就业官方QQ号

    一键加好友
  • 咨询电话:( 9:00-22:00 )

    400-650-7353

【Java设计模式】Java装饰模式(Decorator模式)

2018-01-22 16:56:28

//在新方法中,我们在之前增加其他方法,这里次序先后是用户灵活指定的

public void newMethod(){

otherMethod();

work.();

}

public void otherMethod(){

ListIterator listIterator = others.listIterator();

while (listIterator.hasNext()){

System.out.println(((String)(listIterator.next())) + " 正在进行");

}

}

}

在上例中,我们把挖坑和钉木板都排在了打桩前面,这里只是举例说明额外功能次序可以任意安排。

好了,Decorator模式出来了,我们看如何调用:

Work squarePeg = new SquarePeg();

Work decorator = new Decorator(squarePeg);

decorator.();

Decorator模式至此完成。

如果你细心,会发现,上面调用类似我们读取文件时的调用:

FileReader fr = new FileReader(filename);

BufferedReader br = new BufferedReader(fr);

实际上Java 的I/O API就是使用Decorator实现的,I/O变种很多,如果都采取继承方法,将会产生很多子类,显然相当繁琐。

Jive中的Decorator实现

在论坛系统中,有些特别的字是不能出现在论坛中如"打倒XXX",我们需要过滤这些"反动"的字体。不让他们出现或者高亮度显示。

在IBM Java专栏中专门谈Jive的文章中,有谈及Jive中ForumMessageFilter.java使用了Decorator模式,其实,该程序并没有真正使用Decorator,而是提示说:针对特别论坛可以设计额外增加的过滤功能,那么就可以重组ForumMessageFilter作为Decorator模式了。

所以,我们在分辨是否真正是Decorator模式,以及会真正使用Decorator模式,一定要把握好Decorator模式的定义,以及其中参与的角色(Decoratee 和Decorator)。

免责声明:本文来源于网络,由网友提供或网络搜集,仅供个人交流学习参考使用,不涉及商业盈利目的。如有版权问题,请联系本站管理员予以更改或删除。谢谢合作!

猜你喜欢

 
 
咨询中心
优就业微信扫一扫
微信扫一扫

400-650-7353

加入官方微博