上图展示的是io流中的一个装饰者模式的代码结构

1、实现装饰器模式

汽车厂生产汽车实例,4S店可以喷漆换颜色。

1.1、公共接口

public interface Car {
void skin();
}

1.2、接口实现

实现汽车出厂色

public class Corolla implements Car {

    @Override
public void skin() {
System.out.println("超级无敌灰色");
}
}

1.3、装饰器

装饰构件可以通过装饰器完成装饰

public abstract class FourS implements Car {

    private Car car;

    public FourS(Car car) {
this.car = car;
} @Override
public void skin() {
car.skin();
}
}

1.4、装饰构件

喷枪红

public class RedSprayPaint extends FourS {

    public RedSprayPaint(Car car) {
super(car);
} @Override
public void skin() {
super.skin();
System.out.println("花2000块钱喷红色的漆");
}
}

喷枪白

public class WhiteSprayPaint extends FourS {

    public WhiteSprayPaint(Car car) {
super(car);
} @Override
public void skin() {
super.skin();
System.out.println("花1000块钱喷白色的漆");
}
}

1.5、测试装饰器

public class Main {
public static void main(String[] args) throws IOException {
System.out.println("====================出厂颜色====================");
Car corolla = new Corolla();
corolla.skin();
System.out.println("====================换颜色====================");
RedSprayPaint red = new RedSprayPaint(new WhiteSprayPaint(corolla));
red.skin();
}
}

java 装饰器模式实现代码的更多相关文章

  1. JAVA装饰器模式

    Java程序员们应该对java.io对不会陌生,因为java.io包采用了装饰器模式. 一.定义: Decorator装饰器,顾名思义,就是动态地给一个对象添加一些额外的职责,就好比为房子进行装修一样 ...

  2. Java 装饰器模式详解

    转载请注明出处:http://blog.csdn.net/zhaoyanjun6/article/details/56488020 前言 在上面的几篇文章中,着重介绍了Java 中常见的 IO 相关知 ...

  3. Java设计模式之装饰器模式

    1.装饰器模式的定义(保持接口,扩展功能) Decorate装饰器,顾名思义,就是动态的给一个对象添加一些额外的职责,就好比对房子进行装修一样. 2.装饰器模式的特征 具有一个装饰对象. 必须拥有与被 ...

  4. 重学 Java 设计模式:实战装饰器模式(SSO单点登录功能扩展,增加拦截用户访问方法范围场景)

    作者:小傅哥 博客:https://bugstack.cn 沉淀.分享.成长,让自己和他人都能有所收获! 一.前言 对于代码你有编程感觉吗 很多人写代码往往是没有编程感觉的,也就是除了可以把功能按照固 ...

  5. Java设计模式之(七)——装饰器模式

    1.什么是装饰器模式? Attach additional responsibilities to an object dynamically keeping the same interface.D ...

  6. 23种设计模式之装饰器模式(Decorator Pattern)

    装饰器模式(Decorator Pattern) 允许向一个现有的对象添加新的功能,同时又不改变其结构.这种类型的设计模式属于结构型模式,它是作为现有的类的一个包装. 这种模式创建了一个装饰类,用来包 ...

  7. Java设计模式12:装饰器模式

    装饰器模式 装饰器模式又称为包装(Wrapper)模式.装饰器模式以多客户端透明的方式扩展对象的功能,是继承关系的一个替代方案. 装饰器模式的结构 通常给对象添加功能,要么直接修改对象添加相应的功能, ...

  8. Java设计模式07:常用设计模式之装饰器模式(结构型模式)

    1. Java之装饰器模式(Decorator Pattern) (1)概述:     装饰模式在Java种使用也很广泛,比如我们在重新定义按钮.对话框等时候,实际上已经在使用装饰模式了.在不必改变原 ...

  9. Java IO流以及装饰器模式在其上的运用

    流概述 Java中,流是一种有序的字节序列,可以有任意的长度.从应用流向目的地称为输出流,从目的地流向应用称为输入流. Java的流族谱 Java的 java.io 包中囊括了整个流的家族,输出流和输 ...

随机推荐

  1. Proxychains完成Linux命令行代理

    前言 Proxychains是一个Linux和类Unix平台非常流行的命令行代理工具,它支持强制应用的TCP 连接通过代理,支持 Tor.HTTP与 Socks 代理.与 sshuttle 不同的是, ...

  2. 从源码层面深度剖析Redisson实现分布式锁的原理(全程干货,注意收藏)

    Redis实现分布式锁的原理 前面讲了Redis在实际业务场景中的应用,那么下面再来了解一下Redisson功能性场景的应用,也就是大家经常使用的分布式锁的实现场景. 引入redisson依赖 < ...

  3. 【UE4】GamePlay架构

    新标签打开或者下载看大图 更新: 增加 编程子系统 Subsystem 思维导图 Character pipeline

  4. [Beta]the Agiles Scrum Meeting 3

    会议时间:2020.5.14 20:00 1.每个人的工作 今天已完成的工作 成员 已完成的工作 yjy 实现前端界面美化 tq 实现查看.删除测试点功能的前端修复功能中的bug wjx 升级系统实现 ...

  5. BUAA_2019_OO_第一单元总结

    一.基于度量来分析自己的程序结构 1.第一次作业 1.1类图: 第一次作业由于比较简单,我采用了面向过程的编程方式.在Polynomail类的构造函数中将项直接求导输出.这样的弊端显而易见,不能进行优 ...

  6. 2021.8.16考试总结[NOIP模拟41]

    T1 你相信引力吗 肯定是单调栈维护.但存在重复值,还是个环,不好搞. 发现取区间时不会越过最大值,因此以最大值为断点将环断为序列.在栈里维护当前栈中有多少个与当前元素相等的元素,小分类讨论一下. 最 ...

  7. 设计的MOS管三极管简单开关电路驱动能力不够3

    16楼说得非常明白,补充一点,R3如果不要,会有下冲产生.4 Q: Z/ G  G1 s8 Z- } 能解释下为什么会产生过冲吗?9 i, P* D* X) u. t/ b  ^ 让我们这些菜鸟学习学 ...

  8. linux updatedb: can not open a temporary file for `/var/lib/mlocate/mlocate.db'

    我们想查找我们最新创建的文件时,由于locate的数据库是每天更新.所以我们新创建的文件还没有被更新到系统的数据库. 这是需要手动更新数据库. 然后就可以查到. updatedb 输出 updated ...

  9. 检查是否是BST 牛客网 程序员面试金典 C++ java Python

    检查是否是BST 牛客网 程序员面试金典  C++ java Python 题目描述 请实现一个函数,检查一棵二叉树是否为二叉查找树. 给定树的根结点指针TreeNode* root,请返回一个boo ...

  10. ICPC Mid-Central USA Region 2019 题解

    队友牛逼!带我超神!蒟蒻的我还是一点一点的整理题吧... Dragon Ball I 这个题算是比较裸的题目吧....学过图论的大概都知道应该怎么做.题目要求找到七个龙珠的最小距离.很明显就是7个龙珠 ...