黑马程序员:java基础之装饰设计模式
2023-09-11 14:19:44 时间
一、什么是装饰设计模式
当想要对已有的对象进行功能增强时,可以定义类,将已有对象传入,基于已有的功能,并提供加强功能,那么自定义的类成为装饰类。
装饰类通常会通过构造方法,传递进来一个需要装饰的对象,然后基于这个对象,提供更强大的方法。
下面是装饰设计模式的一个例子,自己写的MyBufferedReader,并提供了myReadLine方法,IO包中类BufferedReader采用原理也是类似的。
FileReaderfr=newFileReader("test.txt"); MyBufferedReaderbr=newMyBufferedReader(fr); Stringline=null; while((line=br.myReadLine())!=null) System.out.println(line); br.myClose();
装饰设计模式比继承要灵活,避免了继承体系的臃肿,而且降低了类与类之间的关系。 装饰类因为增强已有对象,具备的功能与已有对象是相同的,只不过提供了更强的功能。所以装饰类和被装饰类通常 是属于同一个体系的。 如下所示:
如果为了改进一些功能而继承,就可能导致整个继承树过于臃肿,同时要考虑事物之间是否是父类和子类的关系。 在IO包中,还有一个LineNumberReader,继承了BufferedReader,复用了其中功能(readLine),同时是FileReader的装饰类。如果想要获取所读文件中的行数,可以用这个装饰类,其中主要提供了了setLineNumber(),getLineNumber()方法。 最新内容请见作者的GitHub页:http://qaseven.github.io/
JAVA基础复习之JDBC(配置动态数据源) 复习原因 在项目的开发当中,之前数据库连接信息都是写死在配置文件当中。但是突然接到一个需求: 获取外部数据源信息,然后将某些数据通过Echarts绘制成折线图展示出来(ps:数据源需要用户手动设定) 有点懵,因为之前都是写死在配置文件当中的,然后在网上也找了一些资料,发现都不是自己想要的。 最后想到,既然是简单的获取数据进行展示,直接使用JDBC连接数据库获取就可以了啊。没有必要搞什么骚操作。 一直使用的JPA或者mybatis进行数据库连接,很少使用JDBC进行数据库连接。 因此也复习一下JDBC,毕竟无论是JPA还是Mybatis都是对JDBC的一个封装。 什么是JD
【Java 基础】Java 数据类型和 MySql 数据类型对应表 【Java 基础】Java 数据类型和 MySql 数据类型对应表MySQL 数据类型对应 Java 数据类型 类型名称 显示长度 数据库类型 JAVA 类型 JDBC 类型索引 (int) 描述 VARCHAR L+N VARCHAR java.lang.String 12 CHAR N CHAR java.lang.String 1 BLOB L+N BLOB java.lang.byte[] -4 TEXT 65535 VARCHAR java.lang.String -1 INTEGER 4 INTEGER UNSIGNED java.lang.Long 4 TINYINT
Java的学习笔记(02)基础 访问修改函数 static:它用于使成员(块、方法、变量或嵌套类)可以独立于任何其他成员使用,而无需参考特定情况。 strictfp:用于限制、浮点、浮点运算和计算,并在浮点变量中执行任务时保证每个阶段的结果相同。 synchronized:它用于在Java中获得适用于块和方法的同步。 transient:作为序列化的一部分使用的因子修饰符。在序列化的季节,如果我们不想对记录中的特定变量进行多余的估计,那么此时,我们使用transient关键字。 volatile:如果修饰符告诉编译器,由不稳定变量调整的变量通过程序的不同部分发生惊人的变化,则使用volatile。 Java关键字的
获取更多资源Java帮帮IT资源分享网 一、黑马程序员—java 概述与基础知识.................................................................................6 1、何为编程?..............................................................
黑马程序员java笔记之零-----基础知识 基础知识的总结数据类型:基本数据类型和引用数据类型基本数据数据类型(boolean.byte.short.int.lang.float.double.char)引用类型(类、接口、数组)重载(overLoad)和重写(override)重载满足要素:方法名相同、参数的类型和参数的个数不同,和方法返回...
黑马程序员java笔记之十-----银行管理系统 模拟实现银行业务调度系统逻辑,具体需求如下: 1.银行内有6个业务窗口,1- 4号窗口为普通窗口,5号窗口为快速窗口,6号窗口为VIP窗口。 2. 有三种对应类型的客户:VIP客户,普通客户,快速客户(办理如交水电费、电话费之类业务的客户)。
FileReaderfr=newFileReader("test.txt"); MyBufferedReaderbr=newMyBufferedReader(fr); Stringline=null; while((line=br.myReadLine())!=null) System.out.println(line); br.myClose();
装饰设计模式比继承要灵活,避免了继承体系的臃肿,而且降低了类与类之间的关系。 装饰类因为增强已有对象,具备的功能与已有对象是相同的,只不过提供了更强的功能。所以装饰类和被装饰类通常 是属于同一个体系的。 如下所示:
如果为了改进一些功能而继承,就可能导致整个继承树过于臃肿,同时要考虑事物之间是否是父类和子类的关系。 在IO包中,还有一个LineNumberReader,继承了BufferedReader,复用了其中功能(readLine),同时是FileReader的装饰类。如果想要获取所读文件中的行数,可以用这个装饰类,其中主要提供了了setLineNumber(),getLineNumber()方法。 最新内容请见作者的GitHub页:http://qaseven.github.io/
JAVA基础复习之JDBC(配置动态数据源) 复习原因 在项目的开发当中,之前数据库连接信息都是写死在配置文件当中。但是突然接到一个需求: 获取外部数据源信息,然后将某些数据通过Echarts绘制成折线图展示出来(ps:数据源需要用户手动设定) 有点懵,因为之前都是写死在配置文件当中的,然后在网上也找了一些资料,发现都不是自己想要的。 最后想到,既然是简单的获取数据进行展示,直接使用JDBC连接数据库获取就可以了啊。没有必要搞什么骚操作。 一直使用的JPA或者mybatis进行数据库连接,很少使用JDBC进行数据库连接。 因此也复习一下JDBC,毕竟无论是JPA还是Mybatis都是对JDBC的一个封装。 什么是JD
【Java 基础】Java 数据类型和 MySql 数据类型对应表 【Java 基础】Java 数据类型和 MySql 数据类型对应表MySQL 数据类型对应 Java 数据类型 类型名称 显示长度 数据库类型 JAVA 类型 JDBC 类型索引 (int) 描述 VARCHAR L+N VARCHAR java.lang.String 12 CHAR N CHAR java.lang.String 1 BLOB L+N BLOB java.lang.byte[] -4 TEXT 65535 VARCHAR java.lang.String -1 INTEGER 4 INTEGER UNSIGNED java.lang.Long 4 TINYINT
Java的学习笔记(02)基础 访问修改函数 static:它用于使成员(块、方法、变量或嵌套类)可以独立于任何其他成员使用,而无需参考特定情况。 strictfp:用于限制、浮点、浮点运算和计算,并在浮点变量中执行任务时保证每个阶段的结果相同。 synchronized:它用于在Java中获得适用于块和方法的同步。 transient:作为序列化的一部分使用的因子修饰符。在序列化的季节,如果我们不想对记录中的特定变量进行多余的估计,那么此时,我们使用transient关键字。 volatile:如果修饰符告诉编译器,由不稳定变量调整的变量通过程序的不同部分发生惊人的变化,则使用volatile。 Java关键字的
获取更多资源Java帮帮IT资源分享网 一、黑马程序员—java 概述与基础知识.................................................................................6 1、何为编程?..............................................................
黑马程序员java笔记之零-----基础知识 基础知识的总结数据类型:基本数据类型和引用数据类型基本数据数据类型(boolean.byte.short.int.lang.float.double.char)引用类型(类、接口、数组)重载(overLoad)和重写(override)重载满足要素:方法名相同、参数的类型和参数的个数不同,和方法返回...
黑马程序员java笔记之十-----银行管理系统 模拟实现银行业务调度系统逻辑,具体需求如下: 1.银行内有6个业务窗口,1- 4号窗口为普通窗口,5号窗口为快速窗口,6号窗口为VIP窗口。 2. 有三种对应类型的客户:VIP客户,普通客户,快速客户(办理如交水电费、电话费之类业务的客户)。
相关文章
- java虚拟机学习-JVM内存管理:深入Java内存区域与OOM(3)
- Java实现二叉树及相关遍历方式
- 你所不知道的库存超限做法 服务器一般达到多少qps比较好[转] JAVA格物致知基础篇:你所不知道的返回码 深入了解EntityFramework Core 2.1延迟加载(Lazy Loading) EntityFramework 6.x和EntityFramework Core关系映射中导航属性必须是public? 藏在正则表达式里的陷阱 两道面试题,带你解析Java类加载机制
- java基础将一个int数组转换成一个字符串
- 2022 最新 Java 基础 面试题(二)
- 从Java视角理解CPU缓存(CPU Cache)
- JAVA基础--Java枚举+位操作,巧妙判断是否设置
- 第二十五节:Java语言基础-面向对象基础
- 第二十六节:复习Java语言基础-Java的概述,匿名对象,封装,构造函数
- Java基础语法:1.第一个java程序
- JAVA-Eclipse中web-inf和meta-inf文件夹
- Tomcat 奔溃:java.lang.OutOfMemoryError: Java heap space
- Java NIO 基础
- 《21天学通Java(第7版)》—— 1.3 对象和类
- 《21天学通Java(第7版)》—— 第2章 Java编程基础 2.1 语句和表达式
- Java IO 基础
- 分享一道java基础题,测测你是不是基础扎实
- JAVA_IO流
- 【JAVA UI】HarmonyOS 功能很强大的弹窗XPopup
- Java中replace和replaceAll的区别
- java学习路线-Java技术人员之路从0基础到高级
- JAVA学习(三):Java基础语法(变量、常量、数据类型、运算符与数据类型转换)
- Java CI/CD平台的技术选型
- Java Web开发之Servlet、JSP基础