装饰者模式动态地将责任附加到对象上。如要扩展功能,装饰者提供了比继承更有弹性的替代方案。
装饰者可以在所委托被装饰者的行为之前与/或之后,加上自己的行为,以达到特定的目的。
类图:
package com.zaxk.study.pattern;
/**
* 装饰者模式
* Created by ZhuXu on 2017/11/9 0009.
*/
public class DecoratorTest {
public static void main(String[] args) {
Food food = new PorkRib();
food = new Vinegar(food);
food = new Suger(food);
System.out.println(food.getDesc());
System.out.println(new Sauerkraut(new Fish()).getDesc());
}
}
abstract class Food {
String desc;
String getDesc() {
return desc;
}
}
abstract class Condiment extends Food {
abstract String getDesc();
}
class Fish extends Food {
Fish() {
desc = "鱼";
}
}
class PorkRib extends Food {
PorkRib() {
desc = "排骨";
}
}
class Suger extends Condiment {
Food food;
Suger(Food food) {
this.food = food;
}
@Override
String getDesc() {
return "糖" + food.getDesc();
}
}
class Vinegar extends Condiment {
Food food;
Vinegar(Food food) {
this.food = food;
}
@Override
String getDesc() {
return "醋" + food.getDesc();
}
}
class Sauerkraut extends Condiment {
Food food;
Sauerkraut(Food food) {
this.food = food;
}
@Override
String getDesc() {
return "酸菜" + food.getDesc();
}
}
JDK中已实现的装饰者模式:输入输出流。
new BufferedReader(new InputStreamReader(new FileInputStream(file)))
- 大小: 25.3 KB
分享到:
相关推荐
java设计模式之装饰者模式代码
设计模式--装饰者模式java例子
本章可以称为“给爱用继承的人一个全新的设计眼界”。我们即将再度探讨典型滥用问题。你将在本章学到如何使用对象组合的方式,做到在运行时装饰类。为什么呢?一旦你熟悉了装饰者的技巧...——《Head First 设计模式》
JAVA设计模式之装饰模式代码
Java 经典设计模式讲解以及项目实战 设计模式简介:主要介绍各种设计模式的概念和运用场景等 设计模式综合运用:主要是笔者在实际工作中运用到的一些设计模式综合运用事例的提炼 Spring设计模式简介:主要是讲述...
设计模式主要分为三大类: 1.创建型模式:工厂模式、抽象工厂模式、单例模式、建造者模式、原型模式。 2.结构型模式:适配器模式、桥接模式、装饰模式、组合模式、外观模式、享元模式、代理模式。 4.行为型模式:...
使用5种设计模式完成的一个点单系统,显示不同系列下的所有商品,点击选择冰度甜度之后添加到订单中,计算总金额,下单之后发送订单到门店的后厨制作商品。使用了抽象工厂模式、装饰模式、单例模式、代理模式、原型...
计算机后端-Java-图解java设计模式073 装饰者模式(3).avi
计算机后端-Java-图解java设计模式076 装饰者模式(6).avi
计算机后端-Java-图解java设计模式075 装饰者模式(5).avi
计算机后端-Java-图解java设计模式074 装饰者模式(4)-.avi
计算机后端-Java-图解java设计模式072 装饰者模式(2)-.avi
计算机后端-Java-图解java设计模式071 装饰者模式(1)-.avi
目录: 前 言 第一部分 大旗不挥,谁敢冲锋——热身篇 第1章 单一职责原则 1.1 我是“牛”类,我可以担任多职吗 1.2 绝杀技,打破你的传统思维 1.3 我单纯,所以我快乐 1.4 最佳实践 ...附录:23个设计模式
java设计模式示例 创建型模式(5种):工厂方法模式,抽象工厂模式,单例模式,建造者模式,原型模式。 结构型模式(7种):适配器模式,装饰器模式,代理模式,外观模式,桥接模式,组合模式,享元模式。 行为型...
总体来说设计模式分为三大类: 创建型模式,共五种:工厂方法模式、抽象工厂模式、单例模式、建造者模式、原型模式。 结构型模式,共七种:适配器模式、装饰器模式、代理模式、外观模式、桥接模式、组合模式、享元...
java设计模式【之】装饰者模式【源码】【场景:煎饼果子+肠+蛋】 * 测试类【之】煎饼果子来一套 * * 不改变原有对象的基础上,强化已经存在的功能 * 被装饰者与装饰者实现同一个抽象或接口 * 装饰后,最终还是...
这些设计模式提供了一种在创建对象的同时隐藏创建逻辑的方式,而不是使用 new 运算符直接实例化对象。这使得程序在判断针对某个给定实例需要创建哪些对象时更加灵活。 工厂模式(Factory Pattern) 抽象工厂模式...
内容包括统一建模语言基础知识、面向对象设计原则、设计模式概述、简单工厂模式、工厂方法模式、抽象工厂模式、建造者模式、原型模式、单例模式、适配器模式、桥接模式、组合模式、装饰模式、外观模式、享元模式、...
这是JAVA设计模式中属于结构模式的部分,包括Flyweight(共享模式)、Bridge(桥模式)、Decorator(装饰模式)、Composite(组合模式)、Adapter(适配器模式)、Proxy(代理模式)、Facade (外观模式)的源代码。其中有些模式中...