设计优化之装饰器
【摘要】
装饰器模式,是我们接触最多的一个设计模式,做web开发的时候,当浏览器提交内容时候,会被装饰为符合Http协议的然后进行,通信,我们的web容器就能识别,而服务端Request对象,才可以知道什么是Header,什么是Paramter参数。下面我们就模拟一个生成Html标签页面,来简单认识一下这个设计模式
重点:
装饰器模式是一种合...
装饰器模式,是我们接触最多的一个设计模式,做web开发的时候,当浏览器提交内容时候,会被装饰为符合Http协议的然后进行,通信,我们的web容器就能识别,而服务端Request对象,才可以知道什么是Header,什么是Paramter参数。下面我们就模拟一个生成Html标签页面,来简单认识一下这个设计模式
重点:
装饰器模式是一种合成/聚合复用原则,是一种委托,而不是继承关系,也就是说可以把这些功能组件,叠加,构建一个超级对象。
代码分析
- 定义,每个实现的接口都能获取将要被装饰的内容
-
/**
-
* Created by mac on 2017/6/4.
-
* 定义每个实现类,都可以返回的信息
-
*/
-
public interface IPacketCreator {
-
public String handlerContent();
-
}
-
- 抽象出,装饰器
-
/**
-
* Created by mac on 2017/6/4.
-
* 装饰器
-
* 每个实现装饰器的都可以获的,将要装饰的内容,comoponent,然后再次装饰
-
*/
-
public abstract class PacketDecorator implements IPacketCreator{
-
IPacketCreator component;
-
public PacketDecorator (IPacketCreator component){
-
this.component=component;
-
}
-
}
- 构建正文
-
public class PacketBobyCreator implements IPacketCreator {
-
public String handlerContent() {
-
return "Content of Packet[我是消息体]";
-
}
-
}
- 构建<html>对象
-
public class PacketHTMLHeaderCreator extends PacketDecorator {
-
-
public PacketHTMLHeaderCreator(IPacketCreator creator) {
-
super(creator);
-
-
}
-
public String handlerContent() {
-
StringBuffer sb=new StringBuffer();
-
sb.append("<html>");
-
sb.append(component.handlerContent());
-
sb.append("</html>");
-
return sb.toString();
-
}
-
}
测试:
-
/**
-
* Created by mac on 2017/6/4.
-
*/
-
public class Main {
-
public static void main(String[] args) {
-
IPacketCreator iPacketCreator=new PacketHTMLHeaderCreator(new PacketBobyCreator());
-
System.out.println(iPacketCreator.handlerContent());
-
}
-
}
-
//<html>Content of Packet[我是消息体]</html>
文章来源: springlearn.blog.csdn.net,作者:西魏陶渊明,版权归原作者所有,如需转载,请联系作者。
原文链接:springlearn.blog.csdn.net/article/details/102425297
【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)