设计优化之装饰器

举报
西魏陶渊明 发表于 2022/09/25 04:58:32 2022/09/25
【摘要】 装饰器模式,是我们接触最多的一个设计模式,做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

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。