当前位置: 首页 > 编程日记 > 正文

java I/O之装饰者模式

装饰者:

Decorator模式(别名Wrapper):动态将职责附加到对象上,若要扩展功能,装饰者提供了比继承更具弹性的代替方案。

装饰者模式意图:

动态的给一个对象添加额外的职责。Decorator比生产子类灵活。

设计原则:

多用组合,少用继承。

利用继承设计子类的行为,是在编译时静态决定的,而且所有的子类都会继承到相同的行为。然而,如果能够利用组合的做法扩展对象的行为,就可以在运行时动态地进行扩展

类应设计的对扩展开放,对修改关闭。

要点:

1.装饰者和被装饰对象有相同的超类型。

2.可以用一个或多个装饰者包装一个对象。

3.装饰者可以在所委托被装饰者的行为之前或之后,加上自己的行为,以达到特定的目的。

4.对象可以在任何时候被装饰,所以可以在运行时动态的,不限量的用你喜欢的装饰者来装饰对象。

5.装饰模式中使用继承的关键是想达到装饰者和被装饰对象的类型匹配,而不是获得其行为。

6.装饰者一般对组件的客户是透明的,除非客户程序依赖于组件的具体类型。在实际项目中可以根据需要为装饰者添加新的行为,做到“半透明”装饰者。

7.适配器模式的用意是改变对象的接口而不一定改变对象的性能,而装饰模式的用意是保持接口并增加对象的职责。

 

 

java I/O中关于装饰者模式的实现

相关文章:

ubuntu下wireshark添加root权限

wireshark要监控eth0,但是必须要root权限才行。但是,直接用root运行程序是相当危险,也是非常不方便的。 解决方法如下: 1.添加wireshark用户组sudo groupadd wireshark 2.将dumpcap更改为wireshark用户组sudo chgrp wireshark /…

Oracle导出空表解决办法

在oracle 11g 中,发现传统的exp不能导出空的表 oracle 11g 新增了一个参数:deferred_segment_creation,含义是段延迟创建,默认是true。具体是什么意思呢? 如果这个参数设置为true,你新建了一个表T1&#xf…

【ACM】图像分类

题目链接:http://acm.nuc.edu.cn/OJ/contest/show/43/1003 【问题描述】 现在, 我们需要你来解决一项图像分类任务。 首先我们需要介绍下简单图像的数据存储形式,你可以粗略的认为图像在数字意义就是一个二维矩阵(我们这里不考虑…

【译】如何精确判断最终用户响应时间过长的原因?

译者:原始文章有点性能测试工具软文的感觉,毕竟文章来源于某工具官方博客。高手请略过。 对于我这种新手,此文还是给我带来一些惊喜,从上到下地,从表象到根源地,定位他们遇到性能问题-响应时间过长-的根本原…

javascript中重要概念-闭包-深入理解

在上次的分享中javascript--函数参数与闭包--详解,对闭包的解释不够深入。本人经过一段时间的学习,对闭包的概念又有了新的理解。于是便把学习的过程整理成文章,一是为了加深自己闭包的理解,二是给读者提供学习的途径,…

ssl握手过程和ca证书验证

转载:https://www.cnblogs.com/cposture/p/9029014.html SSL 认证 可以将 SSL 服务器与客户端之间的通信配置为使用单向或双向 SSL 认证。 单向 SSL 认证一般是客户端利用服务器传过来的信息验证服务器的合法性,服务器的合法性包括:证书是…

【ACM】练武奇才

题目链接:http://acm.nuc.edu.cn/OJ/contest/show/43/1005 【问题描述】 很久很久以前,constbh大神还在上着小学。一天,在放学的路上,他被一位乞丐叫住,这位乞丐对constbh说,我看你骨骼惊奇,…

Bat命令学习

参考资料:http://www.cnblogs.com/SunShineYPH/archive/2011/12/13/2285570.html

记一次CentOS7内核kernel的删除重装

人生在于折腾,学习Linux更要多多折腾。在一次折腾中吸取教训,更易于记忆。今天我们来折腾Linux的内核:删除系统内核后,通过光盘进行kernel的重安装。友情提示:请在虚拟机环境进行,折腾前务必做好系统快照。…

tcpdump抓包并保存到远程服务器

有的时候,运行tcpdump抓包进程的主机A可能没有足够的硬盘空间。例如我们使用树霉派搭建了一个热点,然后我们想在树霉派上抓包,因为树霉派的存储很小,所以很容易在短时间内将存储空间使用完。 为了解决该问题,我们可以…

【ACM】家喻户晓的中药店(待更)

题目链接:http://acm.nuc.edu.cn/OJ/contest/show/43/1007 【问题描述】 long_xiao和const_hhh是一对恩爱的夫妻。 他们在京城经营着一家中药店,夫妻二人医术精湛、古道热肠,虽然年过花甲,身体依然硬朗。更重要的是&#xff…

常用MySQL的命令集锦

常用MySQL的命令集锦 一、连接MySQL 格式: mysql -h主机地址 -u用户名 -p用户密码 1、例1:连接到本机上的MYSQL。 首先在打开DOS窗口,然后进入目录 mysqlbin,再键入命令mysql -uroot -p,回车后提示你输密码…

google的gn构建系统

什么是GN? GN是一个生成Ninja构建文件的元构建系统,以便你可以用Ninja构建Chromium。 你为什么从GYP切换? 我们相信GN文件比GYP文件更具可读性和可维护性。GN很快: GN比GYP快20倍。GN支持作为构建的一部分,根据Ninj…

【ACM】五子棋

题目链接:http://acm.nuc.edu.cn/OJ/contest/show/25/1009 【问题描述】 五子棋想必大家都玩过,如果没有那我只能重新介绍一下规则了,当横竖斜(共八个方向)出现5个同色棋子时,则认为该颜色棋的选手获胜。…

源码编译安装httpd及其常见错误

一、编译安装的整体步骤 1、在官网下载源码,并解压2、切换到其目录中 3、执行./configure4、编译 二、编译中及安装后配置常见的参数及其说明编译中配置1)指定安装路径--prefix/usr/local/Pacakage_name 指定安装路径--sysconfigdir/etc/Package_name …

Nhibernate3循序渐进(三): 一对多映射和级联保存

我们知道, 对于数据库中的一对多关系, 我们在建表的时候, 应该在多表这里建立外键我们准备这样一个场景, 大学里的系和学生, 一个系有多个学生Department类和Xml如下:Department.csusing System;using System.Collections.Generic;using System.Linq;using System.Text;namespa…

自定义UISearchBar外观

本文转载至 http://www.jianshu.com/p/66b5b777f5dc 最近,在项目过程中遇到要自定义SearchBar的外观,虽然自己觉得用系统默认的外观就行了,不过UI设计师要求不用系统的默认样式,要跟app主题保持 一致。 图1:设计效果图…

linux内存管理和原理分析

https://blog.csdn.net/rebirthme/article/details/50402082

【数据结构】邻接矩阵及其实现

文件操作比直接输入方便很多 直接输入&#xff1a; //建立图的邻接矩阵储存结构 #include <stdio.h> #include <string.h> #define M 20 #define FINITY 5000 typedef struct {char vexs[M];int edge[M][M];int n,e; }Mgraph;//c0&#xff0c;表示建立无向图 …

对职业生涯的思考

从刚毕业到目前所在公司&#xff0c;差不多6年了&#xff0c;想想这六年里面&#xff0c;自己的能力和刚毕业比有了很大的提升&#xff0c;但是现在在什么能力上&#xff0c;我不知道&#xff0c;毕竟没有去过别的公司。最近也在思考自己未来&#xff0c;算是比较迷茫阶段。趁最…

jquery源码分析(七)——事件模块 event(二)

上一章节探讨了事件的一些概念&#xff0c;接下来看下jQuery的事件模块。 jQuery对事件的绑定分别有几个API&#xff1a;.bind()/.live()/.delegate()/.on()/click()&#xff0c; 不管是用什么方式绑定&#xff0c;归根到底还是用addEventListener/attachEvent&#xff08;IE&a…

google gn构建系统的介绍

GN语言和操作 GN语言和操作 内容介绍 使用内置的帮助设计理念语言 字符串清单条件语句循环函数调用作用域和执行Scoping and execution命名事物 文件和目录名称构建配置目标CONFIGS 公共配置模板其他特性 Imports路径处理模式执行脚本与Blaze的区别和相似之处 介绍 本页面描述…

【数据结构】邻接表的储存结构 建立图的邻接表算法

【数据结构】邻接矩阵及其实现 一个图的邻接矩阵的表示是唯一的&#xff0c;但其邻接表表示不唯一&#xff0c;这是因为在邻接表结构中&#xff0c;各便表结点的链接次序取决于建立邻接表时的算法以及输入的次序。 一般而言邻接矩阵适合存储稠密图&#xff0c;邻接表适合存储…

报错:该字符串未被识别为有效的DateTime

报错&#xff1a;该字符串未被识别为有效的DateTime □ 背景 前端的搜索条件中包含关于时间的字符串&#xff0c;由jquery ui的datepicker产生时间字符串。 服务端对时间做了一次转换&#xff1a;DateTime.Parse(Request["时间字段"].ToString())。 搜索的时候没有选…

Nagios监控笔记上

Nagios软件介绍及服务端安装部署实战1. Nagios服务端安装1.1 准备3台服务器或者虚拟机器管理IP地址角色备注192.168.1.80Nagios监控服务器192.168.1.81Lamp服务器被监控的客户端服务器192.168.1.82Lamp服务器被监控的客户端服务器1.2 解决perl编译问题&#xff1a;后面编译的软…

liunx查看python的site-packages路径

有时候我们在liunx上想修改查看python的包路径可以试试以下命令 from distutils.sysconfig import get_python_lib print(get_python_lib()) 如图&#xff1a;

【ACM】杭电OJ 2010

注意格式&#xff01;&#xff01;&#xff01;注意格式&#xff01;&#xff01;&#xff01; 空格的设置 \n的设置 #include <stdio.h> int main () {int i,m,n,g,s,b,flag;while(scanf("%d%d",&m,&n)!EOF){flag0;for(im;i<n;i){gi%10;bi/100…

中科院 工程硕士专业课 复试考试前的辅导安排

同学们大家好&#xff1a;学校定于12月6日、7日组织专业课辅导&#xff0c;1月初进行专业课复试及资格审查。辅导具体日程安排如下&#xff1a;12月6日下午13:00 数据结构&#xff08;报考软件工程、计算机技术领域考生&#xff09; 人文楼教一阶12月7日上午9:00 信号与系统…

TCP性能和发送接收Buffer的关系

本文希望解析清楚&#xff0c;当我们在代码中写下 socket.setSendBufferSize 和 sysctl 看到的rmem/wmem系统参数以及最终我们在TCP常常谈到的接收发送窗口的关系&#xff0c;以及他们怎样影响TCP传输的性能。 先明确一下&#xff1a;文章标题中所说的Buffer指的是sysctl中的 …

PHP 异常类 Exception 高洛峰 细说PHP

/** 1.自定义的异常类&#xff0c;必须是系统类Exception的子类* 如果继承Exception类&#xff0c;重写了构造方法,一定要调用一下父类的构造方法。*/class MyException extends Exception{//必须继承Exception类function __construct($mess){parent::__construct($mess);}func…