设计模式——7装饰模式(Decorator)-阿里云开发者社区

开发者社区> inzaghi1984> 正文

设计模式——7装饰模式(Decorator)

简介: 装饰模式(Decorator)
+关注继续查看

7、装饰模式(Decorator)
顾名思义,装饰模式就是给一个对象增加一些新的功能,而且是动态的,要求装饰对象和被装饰对象实现同一个接口,装饰对象持有被装饰对象的实例。

Source类是被装饰类,Decorator类是一个装饰类,可以为Source类动态的添加一些功能,代码如下:
[java] view plaincopy

  1. public interface Sourceable {
  2. public void method();
  3. }
    [java] view plaincopy
  4. public class Source implements Sourceable {
  5. @Override
  6. public void method() {
  7. System.out.println("the original method!");
  8. }
  9. }
    [java] view plaincopy
  10. public class Decorator implements Sourceable {
  11. private Sourceable source;
  12. public Decorator(Sourceable source){
  13. super();
  14. this.source = source;
  15. }
  16. @Override
  17. public void method() {
  18. System.out.println("before decorator!");
  19. source.method();
  20. System.out.println("after decorator!");
  21. }
  22. }
    测试类:

[java] view plaincopy

  1. public class DecoratorTest {
  2. public static void main(String[] args) {
  3. Sourceable source = new Source();
  4. Sourceable obj = new Decorator(source);
  5. obj.method();
  6. }
  7. }
    输出:

before decorator!
the original method!
after decorator!
装饰器模式的应用场景:
1、需要扩展一个类的功能。
2、动态的为一个对象增加功能,而且还能动态撤销。(继承不能做到这一点,继承的功能是静态的,不能动态增删。)
缺点:产生过多相似的对象,不易排错!

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
设计模式(二)之装饰器模式
定义一个代表被装饰事物的接口: public interface Coffee { public String getCoffer(); public double getPrice(); } 最初的具体事物: public class Starbucks implements Coffee { @Override pub
1002 0
设计模式之六(装饰模式)
前言 装饰模式:动态の给一个对象添加有些额外的职责,就增加功能来说,装饰模式比生成子类更为灵活。 装饰模式结构图   Component是定义一个对象接口,可以给这些对象动态添加职责 ConcreteComponent是定义了一个具体的对象,也可以给这个对象添加一些职责 Decorato...
514 0
Java---设计模块(装饰模式)
场景和问题 在不对原有对象类进行修改的基础上,如何给一个或多个已有的类对象提供增强额外的功能? 引例 写一个MyBufferedReader类,使它能够对字符流(如FileReader、InputStreamReader和PipedReader等)进行功能增强: (1) 提供带缓冲的myRead()方法,对原有的read()方法进行增速; (2)提供一个能够每次读取一行字符的myReadLine()方法。
628 0
装饰设计模式图解
装饰设计模式(IO流中用的多)   装饰设计模式的概述     装饰模式就是使用被装饰类的一个子类的实例,在客户端将这个子类的实例交给装饰类。是继承的替代方案。   优点     使用装饰模式,可以提供比继承更灵活的扩展对象的功能,它可以动态的添加对象的功能,并且可以随意的组合这些功能。
682 0
设计模式之六(装饰模式)
原文:设计模式之六(装饰模式) 前言 装饰模式:动态の给一个对象添加有些额外的职责,就增加功能来说,装饰模式比生成子类更为灵活。 装饰模式结构图   Component是定义一个对象接口,可以给这些对象动态添加职责 ConcreteComponent是定义了一个具体的对象,也可以给这个对象...
763 0
Decorator(装饰)模式
1. 概述          若你从事过面向对象开发,实现给一个类或对象增加行为,使用继承机制,这是所有面向对象语言的一个基本特性。如果已经存在的一个类缺少某些方法,或者须要给方法添加更多的功能(魅力),你也许会仅仅继承这个类来产生一个新类—这建立在额外的代码上。
807 0
+关注
inzaghi1984
金融IT技术人员
223
文章
62
问答
文章排行榜
最热
最新
相关电子书
更多
文娱运维技术
立即下载
《SaaS模式云原生数据仓库应用场景实践》
立即下载
《看见新力量:二》电子书
立即下载