- 浏览: 28455 次
- 性别:
- 来自: 北京
文章分类
最新评论
装饰者模式要点:
1. 装饰着与被装饰者拥有共同的超类
2. 继承的目的是实现类型的继承(从而实现行为的扩展)
3. 行为扩展(最终目的)
场景: 拥有主体类型或业务逻辑,但又具有个性化的处理场景
举例: 不同的咖啡不同的价格,但是计算价格的模式是一样的
代码如下
//运行结果:
[img]
[/img]
1. 装饰着与被装饰者拥有共同的超类
2. 继承的目的是实现类型的继承(从而实现行为的扩展)
3. 行为扩展(最终目的)
场景: 拥有主体类型或业务逻辑,但又具有个性化的处理场景
举例: 不同的咖啡不同的价格,但是计算价格的模式是一样的
代码如下
/** * 超类 咖啡 * @author john * */ public abstract class Coffe { //价格 public abstract double cost(); } /** * 摩卡咖啡(被装饰者) * @author john * */ public class MokaCoffe extends Coffe { @Override public double cost() { // TODO 自动生成的方法存根 return 2.0; } } /** * Nes咖啡 被装饰者 * @author john * */ public class NesCoffe extends Coffe { @Override public double cost() { // TODO 自动生成的方法存根 return 3.0; } } /** * 调料组件(装饰者组件) * @author john * */ public abstract class CompentDecorate extends Coffe { @Override public abstract double cost(); } /** * 奶油调料(装饰者) * @author john * */ public class MilkCondiment extends CompentDecorate { private Coffe coffe; public MilkCondiment(){ } public MilkCondiment(Coffe coffe){ this.coffe = coffe; } @Override public double cost() { // TODO 自动生成的方法存根 return 0.2+coffe.cost(); } } /** * 糖调料 (装饰者) * @author john * */ public class sugarCondiment extends CompentDecorate { private Coffe coffe; public sugarCondiment(){ } public sugarCondiment(Coffe coffe){ this.coffe = coffe; } @Override public double cost() { // TODO 自动生成的方法存根 return 0.1+coffe.cost(); } } public class Test { public static void main(String[] args){ //咖啡 2.0 Coffe mokaCoffe = new MokaCoffe(); //扩展行为(价格) //加牛奶的咖啡 0.2 mokaCoffe = new MilkCondiment(mokaCoffe); System.out.println(mokaCoffe.cost()); //加糖的咖啡 0.1 mokaCoffe = new sugarCondiment(mokaCoffe); System.out.println(mokaCoffe.cost()); } }
//运行结果:
[img]
[/img]
发表评论
-
设计模式之——靠谱的单例模式
2017-10-31 23:44 444修改了一下,还是推一下吧,以前工作中见过很多单例都是存在些 ... -
设计模式之——抽象工厂模式
2017-10-29 23:05 428转载至http://blog.csdn.net/jason05 ... -
设计模式之——简单工厂模式
2017-10-28 04:13 314就是建立一个工厂 ... -
设计模式之——观察者模式
2017-10-19 00:59 320原摘取至百度百科 简 ... -
设计模式之——策略模式
2017-10-16 20:29 455关于设计模式推荐《Head First 设计模式》 第一次感觉 ... -
静态内部类与非静态内部类的区别
2017-07-20 23:23 510今天看到一本书中举例使用了,静态内部类, 不是太了解 ... -
JAVA自定义注解(一)
2017-07-12 19:26 465java中元注解有四个: ... -
线程的三种实现方式
2015-05-31 13:13 1525Java线程的三种实现方式: 大家通常了解的是Thread类与 ... -
JDK的动态代理
2015-05-29 00:49 385直接贴代码了, 先理解 ... -
JAVA守护线程
2015-05-20 22:10 559一直以为守护线程,是一个线程对另一个线程的守护(一个服务线 ... -
ReenTrantLock 与synchronized的区别与使用
2015-05-19 21:41 433java锁就Lock与synchronized两种,Ree ... -
经典容器 数组/链表/队列/散列表/映射表,及相关内容的排序方式
2015-05-07 01:13 634Java 经典容器 数组/链表/队列/散列表/映射表,及相 ... -
for(int i=0;i<list.size;i++) 循环为什么慢
2015-05-03 12:32 1700链表循环使用(for int i=0;i<list. ... -
数组与ArrayList
2015-05-03 00:03 497首先纠正 ... -
java泛型学习笔记
2015-04-28 22:59 1798写这个博文的目的:1.校验自己的学习成果的不足,与错误的地 ...
相关推荐
C#设计模式——装饰模式应用实例,开发一套图形界面构件库的框架实例。
NULL 博文链接:https://alaric.iteye.com/blog/1911949
NULL 博文链接:https://maidoudao.iteye.com/blog/1336072
C#设计模式(23种设计模式) 1. 单件模式(Singleton Pattern) 2. 抽象工厂(Abstract Factory) 3. 建造者模式(Builder) 4. 工厂方法模式(Factory Method) 5. 原型模式(Prototype) 结构型: 6. 适配器...
NULL 博文链接:https://quicker.iteye.com/blog/607122
对象的克隆——原型模式,复杂对象的组装与创建——建造者模式,不兼容结构的协调——适配器模式,处理多维度变化——桥接模式,树形结构的处理——组合模式,扩展系统功能——装饰模式,深入浅出外观模式,实现对象...
本章可以称为“给爱用继承的人一个全新的设计眼界”。我们即将再度探讨典型滥用问题。你将在本章学到如何使用对象组合的方式,做到在运行时装饰类。为什么呢?一旦你熟悉了装饰者的技巧...——《Head First 设计模式》
书名: 设计模式可复用面向对象软件的基础 英文原书名: Design Patterns:Elements of Reusable Object-Oriented software 作者: Erich Gamma 等 译者: 李英军 马晓星 蔡敏 刘建中 书号: 7-111-07575-7 页码: 254 定价...
NULL 博文链接:https://chuanwang66.iteye.com/blog/1325151
目录: 前 言 第一部分 大旗不挥,谁敢冲锋——热身篇 第1章 单一职责原则 1.1 我是“牛”类,我可以担任多职吗 1.2 绝杀技,打破你的传统思维 1.3 我单纯,所以我快乐 1.4 最佳实践 ...附录:23个设计模式
设计模式精解(Design Patterns Explained) ...如何实现关键模式——Strategy(策略)、Observer(观察者)、Bridge(桥接)、Decorator(装饰)等等。 共同点/变化点分析、设计模式以及它们如何帮助理解抽象类。
您必须实现装饰器模式,以便可以在运行时添加提到的服务。 作为开发服务如何工作的示例,在运行时创建一个用加密和缓存装饰的 JSON 策略,以及一个带有日志记录的 XML 策略。 请记住,您必须提供源代码和详细说明所...
装饰设计模式——RecyclerView添加头部和底部-附件资源
扩展系统功能——装饰模式(三) 扩展系统功能——装饰模式(四) 外观模式-Facade Pattern 深入浅出外观模式(一) 深入浅出外观模式(二) 深入浅出外观模式(三) 享元模式-Flyweight Pattern 实现对象的复用——...
4.4DecoratorPattern(装饰模式) 125 4.4.1定义 125 4.4.2现实中的装饰模式——相架 126 4.4.3C#实例——图书馆中的项目 127 4.4.4Java实例——自定义JButton 131 4.4.5优势和缺陷 133 4.4.6应用情景 134 ...
4.4DecoratorPattern(装饰模式) 125 4.4.1定义 125 4.4.2现实中的装饰模式——相架 126 4.4.3C#实例——图书馆中的项目 127 4.4.4Java实例——自定义JButton 131 4.4.5优势和缺陷 133 4.4.6应用情景 134 ...
总体来说设计模式分为三大类: 创建型模式,共五种:工厂方法模式、抽象工厂模式、单例模式、建造者模式、原型模式。 结构型模式,共七种:适配器模式、装饰器模式、代理模式、外观模式、桥接模式、组合模式、享元...
本书从一个新的视角描述面向对象设计,将...\r\n 如何实现关键模式——Strategy(策略)、Observer(观察者)、Bridge(桥接)、Decorator(装饰)等等。\r\n 共同点/变化点分析、设计模式以及它们如何帮助理解抽象类。
学习设计模式的基本目标是要用它,尤其是帮助那些有扎实的OOP基础,而对设计模式很困惑的人在设计中应用它。我不会为不同设计模式写很全面的参考,但我希望这些文章能让你入门。设计模式与特定的语言无关。虽然我用...