zoukankan      html  css  js  c++  java
  • 装饰设计模式

    装饰设计模式:Decorator Pattern,又称装饰者模式。特点是可以在不改变这个类的情况下,动态的为其添加新的功能,在运行时动态对对象进行扩展。主要实现方式是通过将其包装成另一个对象并添加新的功能来实现动态的添加功能。也就是说,是通过另一个类来将本来的对象包裹其中。

    在实现的时候需要注意使装饰对象和真实对象使用相同的接口,这样可以使客户端对象在使用的时候用相同的接口来实现交互。

    适用的场合:

    需要扩展一个类的功能,并动态的赋予对象新的特性时。

    需要动态的为对象添加新的功能,且需要动态的撤销这些功能时。

    需要增加一些基本功能的排列组合产生大量功能时。

    优点:

    虽然直接继承同样可以实现装饰模式的功能,但是装饰模式可以提供比直接的继承方式更多的灵活性。并且可以根据不同的排列组合产生不同的结果。

    缺点:

    比普通的继承复杂度更高。

    会产生过多的类,如果过度使用,会使项目的复杂性提高。

    UML图如下:

    clip_image002

    下面是代码:

    public class test
    {
    public static void main(String args[])
    {
    Component com=new Component();
    DecortorA a=new DecortorA();
    DecortorB b=new DecortorB();
    a.add(com);
    b.add(a);
    b.show();
    System.out.println();
    }
    }
    class Component
    {
    String name="com";
    void show()
    {
    System.out.println(name);
    }
    }
    class DecortorBase extends Component
    {
    Component com;
    void show()
    {
    System.out.println("Decortor");

    }
    }
    class DecortorA extends DecortorBase
    {
    void add(Component c)
    {
    com=c;
    }
    void show()
    {
    System.out.println("A");
    com.show();
    }
    }
    class DecortorB extends DecortorBase
    {
    void add(Component c)
    {
    com=c;
    }
    void show()
    {
    System.out.println("B");
    com.show();
    }
    }

    运行结果如下:

    联系我:renhanlinbsl@163.com

    2016-7-31

    19:44

  • 相关阅读:
    随想13:论“善”字
    Nginx做前端Proxy时TIME_WAIT过多的问题
    HTTP的长连接和短连接
    nginx长连接的问题
    Tomcat性能参数设置
    Nginx1.1.4+ 对后端机器的长连接特性
    HTTP长连接200万尝试及调优方法
    NGINX轻松管理10万长连接 --- 基于2GB内存的CentOS 6.5 x86-64
    CRtmpServer转推流到Nginx Rtmp及SRS(SimpleRtmpServer)的经历
    rtmp流媒体编程相关整理2013(crtmpserver,rtmpdump,x264,faac)
  • 原文地址:https://www.cnblogs.com/ives/p/decortor_pattern.html
Copyright © 2011-2022 走看看