程序员最近都爱上了这个网站  程序员们快来瞅瞅吧!  it98k网:it98k.com

本站消息

站长简介/公众号

  出租广告位,需要合作请联系站长


+关注
已关注

分类  

暂无分类

标签  

暂无标签

日期归档  

2023-06(2)

设计模式之装饰模式

发布于2021-11-21 21:22     阅读(582)     评论(0)     点赞(7)     收藏(0)


装饰模式适合于之前定义的某个类不够好用或者功能需要扩展,现在用一个新类继承,重写其方法。

代码演示(模拟java jdk中的FileInputStream和BufferedInputStream)

抽象类

  1. package com.wmx.zhuangshi;
  2. public abstract class InputStream {
  3. public abstract int read();
  4. public abstract int read(byte[] buf);
  5. }

子类

  1. package com.wmx.zhuangshi;
  2. public class FileInputStream extends InputStream {
  3. @Override
  4. public int read() {
  5. System.out.println("低性能的进行读取");
  6. return 95;
  7. }
  8. @Override
  9. public int read(byte[] buf) {
  10. System.out.println("低性能的进行读取");
  11. buf[0] = 95;
  12. buf[1] = 96;
  13. buf[2] = 97;
  14. return 3;
  15. }
  16. }

装饰类

  1. package com.wmx.zhuangshi;
  2. public class BufferedInputStream extends FileInputStream {
  3. private InputStream is;
  4. public BufferedInputStream(InputStream is) {
  5. this.is = is;
  6. }
  7. @Override
  8. public int read() {
  9. System.out.println("缓冲8KB字节进行高效读取");
  10. return is.read();
  11. }
  12. @Override
  13. public int read(byte[] buf) {
  14. System.out.println("缓冲8KB字节进行高效读取");
  15. return is.read(buf);
  16. }
  17. }

测试类

  1. package com.wmx.zhuangshi;
  2. public class Test {
  3. public static void main(String[] args) {
  4. BufferedInputStream bi = new BufferedInputStream(new FileInputStream());
  5. bi.read();
  6. }
  7. }

至此,装饰模式讲解完毕,有疑问的可以下方留言,相互学习,我是心哥说编程,致力于成为一个编程大牛编程爱好者。

原文链接:https://blog.csdn.net/Trybravely/article/details/121443177



所属网站分类: 技术文章 > 博客

作者:想要飞翔的天使

链接:http://www.javaheidong.com/blog/article/326721/9ecee93cddcf6fc8481c/

来源:java黑洞网

任何形式的转载都请注明出处,如有侵权 一经发现 必将追究其法律责任

7 0
收藏该文
已收藏

评论内容:(最多支持255个字符)