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

  • 相关阅读:
    UITableViewCell出现动画
    Block简单使用
    Storyboard可视化编程详解
    布局案例
    WebStorm-快捷键
    盒模型布局相关-基础与语法
    多线程编程-003-NSOPeration
    linux安装redis 和 使用
    mui iOS云打包修改权限提示语
    vue 合成图片
  • 原文地址:https://www.cnblogs.com/ives/p/decortor_pattern.html
Copyright © 2011-2022 走看看