装饰器模式(IO流案例)

【开发】云加速ZeroTier组网——内网穿透 还记得向日葵出来之时,让寒假在家之学子欢天喜地,怎会有如此神器远程控制千里之外的计算机,又怎会有如此之好工具ssh连接八卡服务器。但谁知,资本家永远不会有好心眼,这不向日葵的免费服务器已降速,让薅羊毛的苦逼学子又感叹怎么办?当实验室的内网没有接通VPN时又该何去何从?不着急,俺这篇博客帮助你解决烦恼。以下就是手机热点外网访问实验室内网的结果。 阅读详情

装饰器模式(IO流案例)

装饰器模式,也成为包装模式,顾名思义,就是对已经存在的某些类进行装饰,以此来扩展一些功能。其结构图如下:

Component为统一接口,也是装饰类和被装饰类的基本类型。

ConcreteComponent为具体实现类,也是被装饰类,他本身是个具有一些功能的完整的类。

Decorator是装饰类,实现了Component接口的同时还在内部维护了一个ConcreteComponent的实例,并可以通过构造函数初始化。而Decorator本身,通常采用默认实现,他的存在仅仅是一个声明:我要生产出一些用于装饰的子类了。而其子类才是赋有具体装饰效果的装饰产品类。

ConcreteDecorator是具体的装饰产品类,每一种装饰产品都具有特定的装饰效果。可以通过构造器声明装饰哪种类型的ConcreteComponent,从而对其进行装饰。

装饰模式应用场景

在IO中,具体构件角色是节点流,装饰角色是过滤流。

FilterInputStream和FilterOutputStream是装饰角色,而其他派生自它们的类则是具体装饰角色。

DataoutputStream out=new DataoutputStream(new FileoutputStream());

这就是 装饰者模式,DataoutputStream是装饰者子类,FileoutputStream是实现接口的子类。

这里不会调用到装饰者类--FilteroutputStream,只是作为继承的另一种方案,对客户端来说是透明的,是为了功能的扩张.

装饰与代理区别

 

装饰器模式关注于在一个对象上动态的添加方法,然而代理模式关注于控制对对象的访问。换句话 说,用代理模式,代理类(proxy class)可以对它的客户隐藏一个对象的具体信息。因此,当使用代理模式的时候,我们常常在一个代理类中创建一个对象的实例。并且,当我们使用装饰器模 式的时候,我们通常的做法是将原始对象作为一个参数传给装饰者的构造器。

 

装饰模式应用场景

在IO中,具体构件角色是节点流,装饰角色是过滤流。

FilterInputStream和FilterOutputStream是装饰角色,而其他派生自它们的类则是具体装饰角色。

DataoutputStream out=new DataoutputStream(new FileoutputStream());

这就是 装饰者模式,DataoutputStream是装饰者子类,FileoutputStream是实现接口的子类。

这里不会调用到装饰者类--FilteroutputStream,只是作为继承的另一种方案,对客户端来说是透明的,是为了功能的扩张.

 

 

西餐厅 中餐厅  有自己的模式 有利于推广

流程化 程序化  西

中的  油少许 酱油少许   不量化

 

  装饰 装修下

步骤:

 获取被装饰类的引用

 在构造方法中传入被装饰类的对象

 对原有功能进行升级

 

package com.toov5.test;

interface Coder{
    
    public void code();
    
}

class Student implements Coder{

    @Override
    public void code() {
        System.out.println("会PHP");
    }
    
}


class NewStudent implements Coder{
    private Student s;   //获取学生引用
    
    public NewStudent(Student s) {
        this.s = s;
    }

     @Override
    public void code() {
        s.code();  //本身具有的功能
        //对原有的进行升级
        System.out.println("C++");
        System.out.println("Java");
        System.out.println("C#");
    }
     
}



public class TestOk6 {
public static void main(String[] args) throws Exception  {
       Student s = new Student();
       NewStudent newStudent = new NewStudent(s);
       newStudent.code();
  } 
}

 

这样就类似于   BufferedReader(Reader in) 这样的 进行包装 包装的都是 Reader的泛型子类    这样的耦合性低   可以选择 BufferedReader进行包装 也可以选择其他的进行包装

如果是子父类的话 关系就密切了

装饰设计模式是:  耦合性不强,被装饰的类的变化与装饰类的变化无关。

 

uniapp - 解决在线预览PDF文件空白打不开的问题,无论是后端下载二进制文件流pdf还是本地插件或JS预览查看打开白屏不显示,详细排查解决(适用于移动端H5网页、安卓/苹果app、微信小程序) uniapp App端 实现pdf文件预览打开白屏解决,uniapp 在线预览pdf打开一片空白,跨域白屏,uni-app中使用WebView预览PDF文件打开空白,微信小程序(uniapp)预览PDF空白怎么办,下载PDF文件流后打开空白或无法打开的问题,Uniapp H5网页下载二进制pdf文件页面空白以及解决文件损坏打不开的情况,Uniapp app在线预览pdf文件流,PDF加载出来怎么办,服务器后端返回PDF文件流后前端进行下载但打开后一片白屏,解决pdf文件流,预览全是空白页,pdf文件流,下载 阅读详情

相关推荐

Spring WebFlux响应式编程实战(三):优雅处理异常与高效调试技巧

本文深入探讨了Spring WebFlux响应式编程中的异常处理与调试技巧。文章通过电商订单流处理场景,详细解析了Reactor核心操作符onErrorReturn、onErrorResume和onErrorMap的实战应用,并介绍了如何构建@ControllerAdvice和WebExceptionHandler全局异常处理防线。同时,提供了使用.log()操作符、Hooks.onOperatorDebug()及BlockHound进行高效调试的方法,旨在帮助开发者构建健壮、可维护的响应式应用。

weixin_29252171的博客 67

zerotier访问慢?

网上提到关于“给zerotier提速”的最常用的方法则是搭建moon服务器,这里不再赘述;经实测,访问zerotier的速度大大提升(上限为云服务器的带宽)进入云服务器开始搭建(推荐使用Centos或Ubuntu)2:期望提升访问zerotier内网资源的速度。1:正在使用zerotier。选择合适的产品 ,这里选择。这样就生成好moon文件了。账号 ,并完成实名认证;来搭建moon服务器;在控制台依次输入下列命令。下面直接介绍如何使用“

qq_35763045的博客 1万+

(南京观海微电子)——TCON介绍

TCON又称:逻辑板,控制板,在液晶电视里的作用和CRT中的视放板相当,但有本质的区别,逻辑板不是一个纯粹的信号放大器,它输入是LVDS格式信号,而不是RGB。逻辑板的作用是把数字板送来的LVDS或TTL图像数据信号,时钟信号进行处理移位寄存器存储将图像数据信号,时钟信号转换成屏能够识别的控制信号行列信号RSDS控制屏内的MOSFET管工作而控制液晶分子的扭曲度。目前国内主要的TCON板生产商有视显光电。传统TCON的布局主要分为以下两种:X+C分离式和X+C一体式。

m0_75095200的博客 3834

Zerotier 搭建手册(含Moon节点)

Zerotier 搭建手册(含Moon节点)

liyht的博客 2万+

告别SquareLine!用免费的NXP GUI-Guider为海思3516AV300开发LVGL界面(附完整移植流程)

本文详细介绍了如何利用免费的NXP GUI-Guider工具为海思Hi3516AV300开发LVGL界面,包括环境配置、代码移植和性能优化等全流程实战指南。特别针对二维码组件缺失等常见问题提供解决方案,帮助开发者零成本构建高效嵌入式GUI系统。

weixin_28292761的博客 416

FMQL开发环境实战:从零构建国产FPGA SoC的软件基石

本文详细解析了构建国产复旦微FMQL FPGA SoC软件开发环境的完整流程。针对开发者在环境搭建中遇到的核心痛点,文章深入剖析了Procise、IAR与Vivado三大工具的协同角色与版本选择,提供了从软件下载、安装避坑到核心配置的实战指南,并总结了常见问题的排查方法,旨在帮助开发者高效跨过FMQL开发的“第一道坎”。

weixin_29215391的博客 126

ZeroTier 内网穿透,并搭建 moon 中转服务器

由于本系列是建立在个人 NAS 的基础上,所以最好不要通过域名、公网 IP 等访问。本文以广泛使用的 ZeroTier 为例。当然,后面也会给出大部分可用的内网穿透方法链接,可自行参考。注册 ZeroTier 服务NAS 主机客户端主机进阶准备:moon 中转服务器。官方 moon 中转服务器在国外,国内客户端使用延迟大,甚至出现访问不了的问题。可以自己搭建 moon 中转服务器,来实现稳定的服务。主要步骤:由于平台太多,请使用右侧导航目录。注册 ZeroTier 服务。

qq_15113969的博客 1万+

Python调用CANoe

我们可以创建CANoe应用程序对象,打开配置文件,启动模拟,发送和接收消息,并在完成后关闭CANoe应用程序。这使得我们能够使用Python自动化执行测试任务,并集成CANoe的功能到我们的Python应用程序中。CANoe是一款功能强大的汽车网络仿真和测试工具,它能够模拟和分析汽车网络通信,并提供丰富的测试功能。通过Python编程语言,我们可以方便地调用CANoe的API,实现自动化测试和集成CANoe的功能到我们的Python应用程序中。在CANoe中,我们可以为不同的汽车网络创建配置文件。

AzqLinux的博客 1287

解决zeroiter连接速度过慢,掉包问题(打洞失败)openwrt为例

打洞失败主要是路由器设置问题,nat改为全锥形,便可以解决这个问题。

qq_74177889的博客 6396

基于STM32的嵌入式平台实现EtherCAT主站

本文将介绍如何在基于STM32的嵌入式平台上构建EtherCAT主站,并提供相应的源代码。使用SOEM库提供的API函数,我们可以实现与EtherCAT从站设备的实时通信和数据交换。在STM32的代码中,使用SOEM库提供的API函数初始化EtherCAT主站。在SOEM库中,我们可以找到EtherCAT主站的实现代码和相关的API函数。使用SOEM库提供的API函数实现EtherCAT主站的功能,包括发送和接收EtherCAT数据帧、处理从站设备的状态等。确保连接正常并且设备能够相互通信。

CodeSageX的博客 2833

RK3588平台开发系列讲解(硬件篇-功能外设2)

RK3588 芯片内置两个USB3.0 OTG控制器(内嵌2个USB2.0 OTG,下图绿色处),1个USB3.0 HOST 控制器,2个USB2.0 HOST控制器。这些控制器与PHY的内部复用图如下:USB3.0 OTG0 控制器支持SS/HS/FS/LS, 内嵌的USB2.0(HS/FS/LS)信号采用USB2.0 OTG PHY, 信号名见下图的红色方框内;RK3588目前仅此接口支持做Fireware的Download,应用中请务必要预留出。

whm128的博客 2509

装饰器模式理解示例(IO流案例)

装饰器模式(IO流案例)

职场菜白 463

120、NPU的Mythic M1076:模拟存算一体NPU

这篇文章分享了作者调试Mythic M1076模拟存算一体NPU的实战经验,主要包含以下要点: 硬件设计陷阱:参考电压输入必须使用低ESR电容,普通贴片电容会导致模拟计算阵列工作异常。 核心技术原理: 采用真正的存算一体架构,将权重存储为模拟电压 使用浮栅晶体管存储权重,通过电流叠加实现乘法运算 包含108个计算单元阵列(Tile),每个256×256规模 使用注意事项: 编程模型特殊,需要依赖SDK自动映射网络层 存在6-8位有效精度限制,需用量化感知训练 功耗特性独特,静态偏置电流占主要功耗 调试手段有

m0_50546716的博客 122

装饰器模式详解(附代码案例和源码分析)

通过多态,装饰器模式变得更加强大和灵活。它允许我们在运行时动态地组合不同的行为,同时保持代码的清晰和可维护性。这种组合为我们提供了一种优雅的方式来扩展对象的功能,而不需要创建大量的子类。

xweiran的博客 1532

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

10.9-全栈Java笔记:装饰器模式构建IO流体系

 装饰器模式 装饰器模式是GOF23种设计模式中较为常用的一种模式。它可以实现对原有类的包装和装饰,使新的类具有更强的功能。   我这里有智能手机Iphone, 我们可以通过加装投影组件,实现原有手机功能的扩展。这就是一种“装饰器模式”。 我们在未来普通人加装“外骨骼”装饰,让普通人具有力扛千斤的能力,也是一种“装饰器模式”。       【图】 手机经过投影套件“装饰后”,

全栈Java笔记 337

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

设计模式-装饰器模式

装饰器(Decorator)模式指在不改变现有对象结构的情况下,动态地给该对象增加一些职责(即增加其额外功能)的模式,它属于对象结构型模式。采用装饰模式扩展对象的功能比采用继承方式更加灵活;可以设计出多个不同的具体装饰类,创造出多个不同行为的组合。但是装饰模式增加了许多子类,如果过度使用会使程序变得很复杂。 模式结构 装饰器模式的角色如下: 顶层接口 被装饰者 装饰器抽象类 装饰器 源码导读 装饰器模式使用的典型就是io流了,前面适配器模式我们说到过io流使用了适配器模式,用于字节流转换到字符流;装饰器

qq_40506829的博客 204

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

设计模式之装饰器模式

装饰器模式又叫包装模式,通过一种对客户端透明的方式来扩展对象的功能,是继承关系的一个替代方案。运用装饰器模式最经典的例子就是Java的IO各种流。 角色和职责: 抽象组件角色:一个抽象接口,是被装饰类和装饰类的父接口。 具体组件角色:为抽象组件的实现类。 抽象装饰角色:包含一个组件的引用,并定义了与抽象组件一致的接口。 具体装饰角色:为抽象装饰角色的实现类。负责具体的装饰。

rushuiwushi的专栏 637

Java实践(二)Java IO流深度解析

Java IO流体系围绕数据流动方向和处理数据类型设计,包含字节流和字符流两大体系,分别以InputStream/OutputStream和Reader/Writer为基类。

致力于硬件设计、人工智能知识及技术的分享,不断鞭策自己成长,共同进步! 1297

大话设计模式----装饰器模式

1、简单工程模式 工厂:就是生成bean的类---创建型模式 2、策略模式 策略:不因算法的变化,而改变客户端的调用(商品收银程序实例) 3、单一职责原则(手机干不过照相机) 4、开放-封闭原则(考研or工作) 既:可以扩展但不可以修改的原则(一国两制) 新需求来了,不应该是修改原有代码,而应该是新增代码解决 5、依赖倒转原则 6、装饰者模式 ...

liufang_king的博客 260

Java过滤器高级案例之装饰器模式

文章目录基础1.目标:扩展数据库连接的close方法,不要关闭连接,要还回池中2.IO流中的装饰器模式过滤器中的装饰器模式案例一:全站乱码解决(get+post)案例二:脏话过滤器案例四:全站压缩案例五,对于常用的动态资源生成的结果进行缓存 基础 装饰器模式(包装模式)简单来说就是扩展原有类的原有方法,其他详细内容这里不做过多说明 这里用两个案例讲解: 1.目标:扩展数据库连接的close方法,不要关闭连接,要还回池中 //java.sql.Connection:被包装类 //自己写的:包装类 MyConn

Apple_Boy的博客 739

Java使用IO流的思路

两个体系:InputStream、OutputStream和Reader、Writer。 源和目的:文件、内存、网络、控制台。 File操作以及装饰器模式。 1、源或目的是字节还是文本?是读还是写? 字节流读、写:FileInputStream、FileOutputStream; 文本流读、写:FileReader、FileWriter; 2、使用缓冲 字节缓冲流:BufferedInp...

让学习编程变得生动有趣~ 313

装饰器模式

装饰器模式什么是装饰器模式经典案例 java.io包下 字符流字节流。优点缺点奶茶店 案例UML类图Beverage 组件类(Component)Decaf 被装饰者(decorated)Mike Soy 装饰类(decorator)测试类 什么是装饰器模式 装饰器模式(Decorator Pattern)允许向一个现有的对象添加新的功能,同时又不改变其结构。这种类型的设计模式属于结构型模式,它是作为现有的类的一个包装。 这种模式创建了一个装饰类,用来包装原有的类,并在保持类方法签名完整性的前提下,提供

jj89929665的博客 220

java的io流_java基础之IO流(IO篇)

I/O类库中使用“流”这个抽象概念。Java对设备中数据的操作是通过流的方式。表示任何有能力产出数据的数据源对象,或者是有能力接受数据的接收端对象。“流”屏蔽了实际的I/O设备中处理数据的细节。IO流用来处理设备之间的数据传输。设备是指硬盘、内存、键盘录入、网络等。IO的分类可以为:流按操作数据类型的不同分为两种:字节流与字符流。流按流向分为:输入流,输出流(以程序为参照物,输入到程序,或是从程序...

weixin_34571272的博客 282

java23种设计模式之装饰器模式

首先我们在学习装饰器模式的时候,先要了解它的作用:为一个对象增加额外的增强功能,相当于美女穿新衣,美女更漂亮了 使用条件: 1.在不影响其他对象的情况下,以动态、透明的方式给单个对象添加职责 2.处理那些可以撤销的职责 3.当不能采用生成子类的方式进行扩充时 结构图: 构件的组成: 抽象组件角色(Component):定义一个对象接口,以规范准备接受附加责任的对象

ghjzzhg的博客 542

设计模式——装饰器模式

结构型模式——装饰器模式 简述装饰器概念,与代理模式的区别,jdk源码案例

qq_51114283的博客 405

【Java之IO操作全集】

Java IO操作一脉打通!

ypykip博客 566
上一篇: Tomcat调优策略
下一篇: 观察者模式
Art&Code
博客等级 码龄7年 77粉丝 554原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值