java的装饰者模式是什么

发布时间:2021-09-04 22:05:39 作者:chen
来源:亿速云 阅读:125

本篇内容介绍了“java的装饰者模式是什么”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!



一、装饰者模式的基本介绍
1.1 意图

动态地给一个对象添加额外的职责。


1.2 结构

装饰者模式的基本结构如下:


java的装饰者模式是什么

    定义一个对象接口,可以给这些对象动态地添加职责。

定义一个对象,可以给这个对象添加一些职责。

装饰角色,持有一个Component对象的实例,并定义一个与Componnet接口一致的接口。

具体装饰角色,负责给组件添加职责。

二、装饰者模式示例

西游记中的孙悟空,具有七十二般变化,给我们留下了深刻的印象,他的每一种变化都给他带来了一种新的本领。他变成鱼儿时,就可以到水里游泳;他变成雀儿,就可以在天上飞行。
下面我们就以齐天大圣的例子来完成一个装饰者模式的例子:

java的装饰者模式是什么

package com.wangmengjun.tutorial.designpattern.decorator;
public interface TheGreatestSage {
 void move();}
package com.wangmengjun.tutorial.designpattern.decorator;
public class Change implements TheGreatestSage {
 private TheGreatestSage sage;    public Change(TheGreatestSage sage) {    this.sage = sage;  }
 public void move() {    sage.move();  }
}

package com.wangmengjun.tutorial.designpattern.decorator;
public class Monkey implements TheGreatestSage {
 public void move() {    System.out.println("Monkey move~~");  }
}
package com.wangmengjun.tutorial.designpattern.decorator;
public class Bird extends  Change {
 public Bird(TheGreatestSage sage) {    super(sage);  }
 @Override  public void move() {    System.out.println("Bird move~~");  }}

package com.wangmengjun.tutorial.designpattern.decorator;
public class Fish extends  Change {
 public Fish(TheGreatestSage sage) {    super(sage);  }
 @Override  public void move() {    System.out.println("Fish move~~");  }}

对象包装示例:
package com.wangmengjun.tutorial.designpattern.decorator;
public class Client {    public static void main(String[] args) {    TheGreatestSage sage = new Monkey();        /**     * 单层封装     */    TheGreatestSage bird = new Bird(sage);    //bird.move();        TheGreatestSage fish = new Fish(bird);    //fish.move();        /**     * 多层封装     */    TheGreatestSage fish3 = new Fish(new Bird(sage));    fish3.move();  }
}

java的装饰者模式是什么

这种方式是否似曾相识 ? 

大家回忆一下JDK中的io流的创建方式是否也是如此。一个InpuStream的简单结构如下:  

java的装饰者模式是什么

new BufferedReader(new FileReader("F:\\test.txt"));

三、小结

3.1 适用场景

在以下 情况下可以使用装饰模式:

3.2 优点 vs 缺点

优点

缺点

“java的装饰者模式是什么”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注亿速云网站,小编将为大家输出更多高质量的实用文章!

推荐阅读:
  1. java如何实现装饰者模式
  2. PHP中的装饰者模式是什么

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

java

上一篇:AJAX中文乱码的解决方法

下一篇:MySQL中的隐藏列的具体查看方法

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》