- 浏览: 29779 次
- 性别:
- 来自: 北京
文章分类
最新评论
装饰者模式要点:
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 486修改了一下,还是推一下吧,以前工作中见过很多单例都是存在些 ... -
设计模式之——抽象工厂模式
2017-10-29 23:05 470转载至http://blog.csdn.net/jason05 ... -
设计模式之——简单工厂模式
2017-10-28 04:13 350就是建立一个工厂 ... -
设计模式之——观察者模式
2017-10-19 00:59 358原摘取至百度百科 简 ... -
设计模式之——策略模式
2017-10-16 20:29 513关于设计模式推荐《Head First 设计模式》 第一次感觉 ... -
静态内部类与非静态内部类的区别
2017-07-20 23:23 549今天看到一本书中举例使用了,静态内部类, 不是太了解 ... -
JAVA自定义注解(一)
2017-07-12 19:26 513java中元注解有四个: ... -
线程的三种实现方式
2015-05-31 13:13 1613Java线程的三种实现方式: 大家通常了解的是Thread类与 ... -
JDK的动态代理
2015-05-29 00:49 427直接贴代码了, 先理解 ... -
JAVA守护线程
2015-05-20 22:10 602一直以为守护线程,是一个线程对另一个线程的守护(一个服务线 ... -
ReenTrantLock 与synchronized的区别与使用
2015-05-19 21:41 489java锁就Lock与synchronized两种,Ree ... -
经典容器 数组/链表/队列/散列表/映射表,及相关内容的排序方式
2015-05-07 01:13 676Java 经典容器 数组/链表/队列/散列表/映射表,及相 ... -
for(int i=0;i<list.size;i++) 循环为什么慢
2015-05-03 12:32 1746链表循环使用(for int i=0;i<list. ... -
数组与ArrayList
2015-05-03 00:03 540首先纠正 ... -
java泛型学习笔记
2015-04-28 22:59 1838写这个博文的目的:1.校验自己的学习成果的不足,与错误的地 ...
相关推荐
装饰器模式是面向对象设计模式的一种,主要用于在不改变原有对象结构的情况下,动态地为对象增加新的功能。这种模式在Java中尤其常见,因为它允许我们遵循“开闭原则”——对扩展开放,对修改关闭。 装饰器模式的...
装饰模式是一种设计模式...通过阅读和理解《设计模式:可复用面向对象软件的基础》等经典书籍,以及像博客“设计模式——装饰模式”这样的在线资源,我们可以深入掌握并灵活运用装饰模式,提高代码的可维护性和扩展性。
"设计模式之美——教你写出高质量代码"这个主题旨在帮助开发者更好地理解和应用设计模式,从而提升代码的质量和可维护性。设计模式不仅对面试有所帮助,也是职场发展中的必备技能,无论你使用哪种开发语言。 设计...
"深入浅出设计模式三——Beverage实现(装饰者模式)"这一标题指出,我们将探讨如何使用装饰者模式来实现一个饮品系统。装饰者模式是一种结构型设计模式,它允许我们在运行时向对象添加新的行为或职责,而无需修改对象...
装饰模式是一种结构型设计模式,它允许在运行时动态地给对象添加新的行为或属性,而不必修改原有类的代码。在C#中,装饰模式常用于扩展对象的功能,同时保持对象接口的一致性。本实例是关于如何在开发图形界面构件库...
在博客文章“装饰者模式——Decorator”中,作者可能详细讲解了以下几个方面: 1. 装饰者模式的基本概念和原理。 2. 如何通过代码示例展示装饰者模式的实现。 3. 装饰者模式与继承的区别和优势。 4. 装饰者模式在...
设计模式是软件工程中的一种重要概念,它代表了在特定情境下解决常见问题的最佳实践。刘伟先生在讲解设计模式时,通常会深入浅出地介绍这些模式的原理、应用场景以及如何有效地在实际编程中应用它们。设计模式并不是...
《设计模式——GFour》是一本深受IT从业者喜爱的经典书籍,尤其在C++开发者中具有广泛影响力。设计模式是软件工程领域中的一种最佳实践,它总结了在特定情境下解决问题的常见方法,使得代码可读性更强,复用性更高,...
装饰模式是一种设计模式,属于结构型模式,其主要目的是在不改变对象本身的基础上,通过向对象添加新的行为或属性来扩展其功能。这种模式遵循“开闭原则”,即对扩展开放,对修改关闭。 在装饰模式中,有四个关键...
C#设计模式(23种设计模式) 1. 单件模式(Singleton Pattern) 2. 抽象工厂(Abstract Factory) 3. 建造者模式(Builder) 4. 工厂方法模式(Factory Method) 5. 原型模式(Prototype) 结构型: 6. 适配器...
装饰模式动态地给一个对象添加一些额外的职责;外观模式提供了一个统一的接口,用来访问子系统中的多个接口;代理模式为其他对象提供一种代理以控制对这个对象的访问;组合模式将对象组合成树形结构以表示“部分-...
- 装饰模式:动态地给一个对象添加一些额外的职责。 - 外观模式:提供一个统一的接口,用来访问子系统中的多个接口。 - 代理模式:为其他对象提供一种代理以控制对这个对象的访问。 3. **行为型模式**: - 责任...
本资料“《java设计模式》课后习题模拟试题解答——刘伟.zip”主要涵盖了Java设计模式的学习与应用,特别是针对刘伟教授的相关课程的课后习题及模拟试题的解答。 设计模式分为三大类:创建型、结构型和行为型模式。...
《设计模式——Java语言中的应用》是一本专为Java开发者深入理解面向对象设计而编写的经典书籍。设计模式是软件工程领域中经过实践验证的、解决常见问题的有效方案,它们代表了在特定上下文中,针对特定问题的最优...
在"设计模式之装饰模式:以售卖咖啡为例"的场景中,我们可以详细解析其应用。 首先,咖啡的选择过程可以看作是基础产品(Component),例如原味咖啡。客户可以选择的基础咖啡类型可能包括拿铁、卡布奇诺等,这些都...