最新文章列表

Java设计模式篇(四)--装饰模式详解

我们来说一下装饰模式。 一、什么是装饰模式 装饰模式也叫包装模式,使用它可以给指定对象增强原有功能,用于扩展原有功能。相比于子类继承,装饰模式提供了更好的灵活性。而对于使用者来说,这个过程是透明的,调用方式没有发生变化。   二、装饰模式的结构图  从结构图我们可以看到,在装饰模式中存在的角色: 抽象组件角色(Component):在抽象组件接口类中,抽象出要增强的功能接口。 具体 ...
zhaodengfeng1989 评论(0) 有537人浏览 2018-10-29 15:04

设计模式之——装饰者模式

装饰者模式要点:       1. 装饰着与被装饰者拥有共同的超类       2. 继承的目的是实现类型的继承(从而实现行为的扩展)       3. 行为扩展(最终目的) 场景: 拥有主体类型或业务逻辑,但又具有个性化的处理场景 举例: 不同的咖啡不同的价格,但是计算价格的模式是一样的 代码如下 /** * 超类 咖啡 * @author john * */ p ...
chou_qi 评论(0) 有370人浏览 2017-10-22 22:23

HeadFirst设计模式_读书笔记_003_装饰者模式

1.问题的引入:    有时候我们需要动态地扩展对象的功能。比如现在给快餐店编写一菜单程序。主食和菜品可以互相搭配,我们要怎么确立餐厅需要 ...
afra.liu 评论(0) 有664人浏览 2017-03-10 11:42

装饰者模式一染色馒头

一模式定义         装饰者模式,是在不改变原类文件和使用继承的情况下,动态扩展一个对象功能,它是通过创建一个包装对象,也就是装饰来包装真实的对象。 装饰对象和真实对象有相同接口,这样客户端对象就可以和真实对象相同方式和装饰对象交互。 装饰对象包含一个真实对象的引用。 二模式举例 1模式分析 我们借用黑心商贩制做染色馒头案例说明这一模式。 2装饰者模式静态类图 3代码示例 ...
cakin24 评论(0) 有681人浏览 2016-10-12 20:54

装饰者模式

● 抽象构件(Component)角色:给出一个抽象接口,以规范准备接收附加责任的对象。 ● 具体构件(ConcreteComponent)角色:定义一个将要接收附加责任的类。 ● 装饰(Decorator)角色:持有一个构件对象的实例,并定义一个与抽象构件接口一致的接口。 ● 具体装饰(ConcreteDecorator)角色:负责给构件对象“贴上”附加的责任   总结:首先抽象角色 ...
xhnszdm 评论(0) 有356人浏览 2016-09-28 11:23

设计模式总结之装饰模式 (Decorator)

装饰模式(Decorator)就是使用被装饰的一个子类的实例,在客户端将这个子类的实例委托给装饰类。装饰模式是结成关系的一个替代方案。 装饰模式以对客户端透明的方式增添了对象的功能,其在与动态的给对象添加了责任,当然这里的继承便是静态的。 其中重要的地方时装饰对象和真实对象有相同的接口,这样客户端就可以和真是对象一样的交互方式和装饰对象交互,然后装饰对象把所有从客户端接收过来的请求全部转发给 ...
408599764 评论(0) 有538人浏览 2016-04-22 13:17

装饰者设计模式

       装饰模式是在不必改变原类文件和使用继承的情况下,动态地扩展一个对象的功能。它是通过创建一个包装对象,也就是装饰来包裹真实的对象.以下情况使用Decorator模式 1. 需要扩展一个类的功能,或给一个类添加附加职责。 2. 需要动态的给一个对象添加功能,这些功能可以再动态的撤销。 3. 需要增加由一些基本功能的排列组合而产生的非常大量的功能,从而使继承关系变的不现实。 4. ...
hm4123660 评论(3) 有1592人浏览 2015-05-28 19:06

装饰者模式

有时候为了传承某个类的一些功能,我们可以采用继承该类来获取功能,并可以通过覆写某些方法来进行功能加强。然而若想对一批类的功能进行加强,如果仍采用继承,不仅在代码上重复,并且不利于扩展。如下所示: public interface Component { public void fun(); } public class ConcreteAComponent implements ...
乒乓狂魔 评论(4) 有1223人浏览 2014-11-19 06:51

java设计模式——装饰者模式

一、什么情况下考虑使用“装饰者模式”?        当我们需要将责任动态的附加到对象上的时候;也就是说,我们开发设计的对象中有某一部分的功能现在还不能确定,以后需要动态的添加或者去掉。或者是在使用继承比较困难的时候,可以采用组合的实现方式(继承与复用)。         结合下面一个实际可能应用的场景来进行分析:          此为某一咖啡店的简单的菜单系统,其中所有的咖啡必须继 ...
lwbbupt 评论(2) 有2116人浏览 2014-11-18 21:48

装饰者模式

使用对象组合的方式(被装饰者组合到装饰者里面),做到在运行时装饰类。   去数码城配电脑,除了买电脑,还需要配置很多配件。 Computer是一个抽象类,cost()方法是抽象的(因为每个电脑的价格都不一样),子类必须定义自己的实现。 个人电脑:Thinkpad,Acer, Sony等 电脑配件,如:MemoryBank,CD,Audio。根据所加的配件不同,最后买单的价格也不同。 ...
lovefeixian 评论(1) 有588人浏览 2014-10-17 16:56

装饰者模式

装饰者模式     装饰者模式拥有一个设计非常巧妙的结构,它可以动态的添加对象的功能。在基本的设计原则中,有一条重要的设计原则,叫做 聚合 ...
zendly 评论(0) 有418人浏览 2014-08-16 21:56

装饰者模式(Decorator)

一、引入 本篇可以称为“给爱用继承的人一个全新的设计眼界”。我们即将再度探讨典型的继承滥用问题。你将在本章学到如何使用对象组合的方式,做到在运行时装饰类。一旦你熟悉了装饰的技巧,你将能在不修改任何底层代码的情况下,给你的对象赋予新的职责。 以StarBuzz咖啡店为例,他们原先的类设计是这样的: 但需求扩展,购买咖啡时,可以要求在其中加入各种调料,如豆浆Soy,蒸奶Streamd Milk, ...
足至迹留 评论(2) 有2022人浏览 2014-08-06 10:19

Java设计模式之装饰者模式

  装饰者模式在我理解就是对象功能的封装和传递的过程。   我们去花店买花送人的时候会首先选哪种花,比如送老婆选的红玫瑰,送妈妈的康乃馨等等,然后包装走人;如果你想送大一点的,那你就得买其他的去搭配,比如101朵玫瑰,外加一些荷兰百合,总之我们会买更多的花(在模式中我们认为有更多的操作)让它能够成为一束花,然后再选那种包装,不论哪种,最终我们得到的是带有包装的一朵花或者一束花。   我们把打成花束和 ...
会飞的拉布拉多 评论(0) 有1403人浏览 2014-03-11 14:36

装饰者模式(Decorator Pattern)_Java

Decorator Pattern    问题  我开了一家蛋糕店,蛋糕最普通的是面包奶油蛋糕(MilkCake),你可以根据自己的喜好,在这个普通的蛋糕上添加你喜欢的一些装饰,我们提供的有: 草莓:Strawberry=$8 巧克力:Chocolate=$11 苹果:Apple=$5 橘子:Orange=$3 .... 普通蛋糕:$100 现在我需要做一个草莓巧克力蛋糕,需要多少钱? 方 ...
hunthon 评论(0) 有846人浏览 2013-10-17 16:26

装饰者模式--除继承外的另一种扩展方式

什么是装饰者模式:     在java中,如果你希望扩展现有类的功能,那么你一定首先想到的是继承现有类(至少我是这样),那么装饰者模式可以让你不使用继承,一样扩展现有类的功能,且不需要对现有类进行修改,让你多了一种扩展现有类的功能的选择。     设计原则   对扩展开发,对修改关闭。     java.io包内的大量的类都是装饰者,下面这张图就一目了然了       ...
michaelye1988 评论(0) 有1356人浏览 2012-10-31 23:54

设计模式之装饰者模式

先来看一个例子: 如果我们读取文件内容往往都会使用 BufferedInputStream bis = new BufferedInputStream(new FileInputStream(new File("c:\\a.txt")); 上大学的时候老师告诉我们这个叫流,在FileInputStream上面又套了一个更大的管道,其实这是使用了装饰者模式,在不改变底层代码 ...
570421779 评论(0) 有913人浏览 2012-08-08 15:14

多线程设计中的设计模式

    中午吃过饭回来闲着没事,忽然想起多线程,打开网页随便看了下,发现多线程的实现实际就是用模板方法、装饰者两种模式设计的。       模板方法模式定义:在一个类中定义一个算法,但将此算法的某些细节留到子类中去实现.换句话说,基类是一个抽象类,那么你就是在使用一种简单形式的摸板模式。     装饰者模式定义:装饰者模式可以动态地给一个对象增加其他职责。就扩展对象功能来说,装饰者模式比生成子 ...
lhc1986 评论(0) 有1137人浏览 2012-02-23 12:43

设计模式之装饰者模式(Decorator)

装饰者模式:动态的将责任附加到对象上。若要扩展功能,装饰者提供了比继承更有弹性的替代方案。   装饰者模式类图 装饰者模式的关键点 装饰者与被装饰者必须是一样的类型,即他们有同样的超类型。   ConcreteComponentA想要装饰ConcreteComponentB及其子类,ConcreteComponentA中必须有一个ConcreteComponentB的引用 ...
kt8668 评论(0) 有873人浏览 2011-11-27 23:39

学习笔记之装饰者模式

装饰者(Decorator)模式又名包装(Wrapper)模式,它动态地将责任附加到对象上。若要扩展功能,装饰者提供了比继承更有弹性的替代方案。 package org.kangsg219.abst; //星巴兹咖啡抽象类 public abstract class Beverage { public String description="Unknown Bever ...
kangsg219 评论(2) 有3972人浏览 2007-10-19 16:19

最近博客热门TAG

Java(141747) C(73651) C++(68608) SQL(64571) C#(59609) XML(59133) HTML(59043) JavaScript(54918) .net(54785) Web(54513) 工作(54116) Linux(50906) Oracle(49876) 应用服务器(43288) Spring(40812) 编程(39454) Windows(39381) JSP(37542) MySQL(37268) 数据结构(36423)

博客人气排行榜

    博客电子书下载排行

      >>浏览更多下载

      相关资讯

      相关讨论

      Global site tag (gtag.js) - Google Analytics