设计模式07-装饰模式,Decorator)

技术设计模式07-装饰模式,Decorator) 设计模式07-装饰模式(Decorator)通过实现与被装饰类实现的相同接口或父类,并将被装饰类作为属性注入到装饰器对象中来完成对装饰器模式的应用。装饰

设计模式07-装饰者模式。

通过实现与修饰类相同的接口或父类,并将修饰类作为属性注入到修饰对象中,修饰模式的应用就完成了。

装饰器模式的重点是调用者不知道整个过程,仍然调用最初实现的接口或父类方法。

设计模式07-装饰模式(Decorator)

概述

通过实现与修饰类相同的接口或父类,并将修饰类作为属性注入到修饰对象中,修饰模式的应用就完成了。

装饰器模式的重点是调用者不知道整个过程,仍然调用最初实现的接口或父类方法。

和适配器模式的比较

装饰器和适配器有一个别名叫做Wrapper,它看起来像是包装一个类或对象,但是它们有不同的用途。

适配器模式的含义是将一个接口转换成另一个接口,其目的是通过改变接口来达到复用的目的。

装饰器模式不是改变被装饰对象的接口,而是保留原有的接口,而是增强原有对象的功能,或者改变原有对象的处理方式来提高性能。

所以这两种图案的设计目的是不一样的。

简单实践

JDK实现

1.有一个接口Source及其实现类codingSourceImpl。如果想要修改execute函数,而不修改现有的类并通过Source类型的声明调用它,可以使用decorator模式。

公共接口来源{

void execute();

}

公共类SourceImpl实现了Source {

@覆盖

public void execute(){ 0

}

}

2.创建一个SourceImpl的装饰器类,实现Source接口,并把要装饰的Source类型的实现类作为一个属性。

公共类SourceDecorator实现了源代码{

私人最终来源来源;

SourceDecorator(源代码){ 0

super();

this.source=source

}

@覆盖

public void execute(){ 0

source . method();

}

}

3.调用装饰器类SourceDecorator的示例如下:

公共类DecoratorPattern(

公共静态void main(String[]args){ 0

source source=new source impl();

source decorator=source decorator . builder()。来源(来源)。build();

decorator . execute();

}

}

源码解析

JDK InputStream流

java.io.FilterInputStream

公共类FilterInputStream扩展了InputStream {

InputStream中受保护的易失性;

受保护的FilterInputStream(InputStream in){ 0

this.in=in

}

FilterInputStream通过持有实现相同父类的对象来增强对象的功能。

内容来源网络,如有侵权,联系删除,本文地址:https://www.230890.com/zhan/53728.html

(0)

相关推荐

  • toekn登陆身份验证流程

    技术toekn登陆身份验证流程 toekn登陆身份验证流程一、 token身份验证
    基于token验证时无状态[*]的,我们不能将信息存储到服务器中,因为当客户每次发起验证请求时,服务器需要去创建一个记

    礼包 2021年12月9日
  • Prometheus之Alertmanager使用帮助

    技术Prometheus之Alertmanager使用帮助 Prometheus之Alertmanager使用帮助root@node-02:/usr/local/alertmanager# ./aler

    礼包 2021年11月18日
  • 盐酸和碳酸钠反应的化学方程式,碳酸氢钠和盐酸反应的化学方程式

    技术盐酸和碳酸钠反应的化学方程式,碳酸氢钠和盐酸反应的化学方程式碳酸氢钠和盐酸的反应化学方程式盐酸和碳酸钠反应的化学方程式:NaHCO3+HCl=NaCl+CO2↑+H2O碳酸氢钠和盐酸的反应离子方程式:
    HCO3- +

    生活 2021年10月29日
  • 嵌入式数据库Sqlite3之如何使用基本的命令操作

    技术嵌入式数据库Sqlite3之如何使用基本的命令操作这篇文章主要介绍“嵌入式数据库Sqlite3之如何使用基本的命令操作”,在日常操作中,相信很多人在嵌入式数据库Sqlite3之如何使用基本的命令操作问题上存在疑惑,小

    攻略 2021年10月22日
  • 27 视图集

    技术27 视图集 27 视图集视图集
    """视图集特点: 1,可以将一组相关的操作, 放在一个类中进行完成 2,不提供get,post方法, 使用retrieve, create方法来替代

    礼包 2021年11月4日
  • base 关键字用法

    技术base 关键字用法 base 关键字用法base 关键字用于从派生类中访问基类的成员:调用基类上已被其他方法重写的方法。前半句实例:
    public class Person
    {
    protected

    礼包 2021年11月24日