咸鱼程序员之java设计模式第九篇-装饰者模式

一、装饰者定义

装饰者模式允许向现有的对象添加新的功能,同时不改变其结构。

属于结构型模式。

创建了一个装饰类,用来包装原有的类,并在保持方法签名完整性的前提下,提供了额外的功能。

二、装饰者的介绍

1. 意图:

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

2. 主要解决:

一般情况下,我们想扩展一个类经常使用继承的方式实现,由于继承为类引入了静态特征,并且随着扩展功能的增多,子类会膨胀。

3. 何时使用:

在不想增加很多子类的情况下扩展类

4. 使用场景:

(1) 扩展一个类的功能;(2) 动态增加功能,动态撤销。

装饰者(装饰器)模式对于程序员来说是一个神级的设计模式,,当我们代码使用这种模式做继承时,说明你已经进阶到高级程序员的门槛了。。。。

下面我们具体来看看装饰者模式具体的代码实现:

假设我现在有一个拍照功能,我想实现添加美颜和滤镜两个功能 。。。

首先我们有一个基本的抽象组件component .他又一个实现类功能-拍照 如下:

 

下面我们定义一个抽象的装饰器decorator 如下:

接下来 ,我们来具体添加装饰器的实现:

 

可以发现装饰器和原有的功能都有一个共同的超类:component

下面我们来测试一下:

 

ok,这就是装饰器模式的具体思想 。。。。。

下面我们看一看具体装饰器模式在java中的经典应用 -文件io

 

首先 inputstream 类有一个close方法。是一个被装饰者-相当于component:

 

下面有一个filterinputstream 。这个类继承了inputstream 并且有一个close 方法的包装----相当于是一个抽象的装饰器coractor

 

我们接着看具体的装饰器实现者:

以上三个具体的装饰器的实现者 分别对装饰器进行不同的扩展。。。这就是经典的装饰器模式。。。。

okay 本节分享就到这里 希望对您有所帮助。。。

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值