装饰者模式()
装饰者模式的核心思想在于无需将所有的逻辑即核心内容构建HTML文本构造和HTTP头生成等个功能模块粘合在一起实现通过装饰者模式可以将它们分解为个几乎完全独立的组件并在使用时灵活地进行装配为实现这个功能可以使用如图所示的结构
图 装饰者模式示例
IPacketCreator即装饰接口用于处理具体的内容PacketBodyCreator是具体的组件它的功能是构造要发布信息的核心内容但是它不负责将其构造成一个格式工整可直接发布的数据格式PacketHTTPHeaderCreator负责对给定的内容加上HTTP头部PacketHTMLHeaderCreator负责将给定的内容格式化成HTML文本如图所示个功能模块相对独立且分离易于系统维护
IPacketCreator的实现很简单它是一个单方法的接口
public interface IPacketCreator {
public String handleContent() //用于内容处理
}
PacketBodyCreator用于返回数据包的核心数据
public class PacketBodyCreator implements IPacketCreator{
@Override
public String handleContent() {
return Content of Packet; //构造核心数据但不包括格式
}
}
PacketDecorator维护核心组件component对象它负责告知其子类其核心业务逻辑应该全权委托component完成自己仅仅是做增强处理
public abstract class PacketDecorator implements IPacketCreator{
IPacketCreator component;
public PacketDecorator(IPacketCreator c){
ccomponent=c;
}
}
PacketHTMLHeaderCreator是具体的装饰器它负责对核心发布的内容进行HTML格式化操作需要特别注意的是它委托了具体组件component进行核心业务处理
public class PacketHTMLHeaderCreator extends PacketDecorator{
public PacketHTMLHeaderCreator(IPacketCreator c) {
super(c)
}
@Override
public String handleContent() { //将给定数据封装成HTML
StringBuffer sb=new StringBuffer()
sbappend(<html>)
sbappend(<body>)
sbappend(componenthandleContent())
sbappend(</body>)
sbappend(</html>\n)
return sbtoString()
}
}
返回目录Java程序性能优化让你的Java程序更快更稳定
编辑推荐
Java程序设计培训视频教程
JEE高级框架实战培训视频教程
JME移动开发实战教学视频
Visual C++音频/视频技术开发与实战
Oracle索引技术
ORACLEG数据库开发优化指南