- 浏览: 196997 次
- 性别:
- 来自: 芜湖
文章分类
- 全部博客 (139)
- 软件 (0)
- Pattern (6)
- CSDN导入 (19)
- Struts (3)
- [网站分类]1.网站首页原创 (27)
- [网站分类]6.转载区 (4)
- Hibernate (10)
- Error (8)
- [网站分类]2.Java新手区 (20)
- Java (8)
- [网站分类]4.其他技术区 (10)
- Web (1)
- C++ (2)
- Algorithm (4)
- Linux (2)
- Skill (1)
- Tech (2)
- Note (2)
- [网站分类]3.非技术区 (1)
- Database (1)
- Winty (7)
- [网站分类]1.网站首页原创Java技术区(对首页文章的要求: 原创、高质量、经过认真思考并精心写作。BlogJava管理团队会对首页的文章进行管理。) (0)
最新评论
-
haohao-xuexi02:
很不错哦。
O'Reilly cos上传组件的使用(1/3) - 上传文件 -
yoin528:
useUnicode=true&charact ...
[原]向MySQL数据库插入Blob数据的问题 -
xiaoqing20:
下载来看看!呵呵
[原]Struts2类型转换 -
xiaoqing20:
[原]Struts2类型转换
[关键字]:java,design pattern,设计模式,《Java与模式》学习,decorator,装饰模式
[环境]:StarUML5.0 + JDK6
[作者]:Winty (wintys@gmail.com)
[正文]:
package pattern.decorator;
/**
* 装饰模式:Decorator Pattern
* @version 2009-6-5
* @author Winty(wintys@gmail.com)
*/
public class DecoratorTest{
public static void main(String[] args){
Component component;
component = new ConcreteComponent();
component.doSomething();
System.out.println("");
//透明的装饰模式
Component decorator;
decorator = new ConcreteDecorator(component);
decorator.doSomething();
System.out.println("");
//半透明的装饰模式
ConcreteDecorator decorator2;
decorator2 = new ConcreteDecorator(component);
decorator2.doSomething();
decorator2.doOtherThings();
}
}
/**
* 抽象构件:Component
*/
interface Component{
public abstract void doSomething();
}
/**
* 具体构件:ConcreteComponent
*/
class ConcreteComponent implements Component{
@Override
public void doSomething(){
System.out.println("do something");
}
}
/**
* 装饰:Decorator
*/
abstract class Decorator implements Component{
private Component comp;
public Decorator(Component comp){
this.comp = comp;
}
@Override
public void doSomething(){
comp.doSomething();
}
}
/**
* 具体装饰:ConcreteDecorator
*/
class ConcreteDecorator extends Decorator{
public ConcreteDecorator(Component comp){
super(comp);
}
@Override
public void doSomething(){
super.doSomething();
doMoreThings();
}
private void doMoreThings(){
System.out.println("do more things.");
}
/**
* 新增的方法不是Component接口的一部分,
* 所以不能通过Component接口透明地访问。
*/
public void doOtherThings(){
System.out.println("do other things.");
}
}
/**
* 装饰模式:Decorator Pattern
* @version 2009-6-5
* @author Winty(wintys@gmail.com)
*/
public class DecoratorTest{
public static void main(String[] args){
Component component;
component = new ConcreteComponent();
component.doSomething();
System.out.println("");
//透明的装饰模式
Component decorator;
decorator = new ConcreteDecorator(component);
decorator.doSomething();
System.out.println("");
//半透明的装饰模式
ConcreteDecorator decorator2;
decorator2 = new ConcreteDecorator(component);
decorator2.doSomething();
decorator2.doOtherThings();
}
}
/**
* 抽象构件:Component
*/
interface Component{
public abstract void doSomething();
}
/**
* 具体构件:ConcreteComponent
*/
class ConcreteComponent implements Component{
@Override
public void doSomething(){
System.out.println("do something");
}
}
/**
* 装饰:Decorator
*/
abstract class Decorator implements Component{
private Component comp;
public Decorator(Component comp){
this.comp = comp;
}
@Override
public void doSomething(){
comp.doSomething();
}
}
/**
* 具体装饰:ConcreteDecorator
*/
class ConcreteDecorator extends Decorator{
public ConcreteDecorator(Component comp){
super(comp);
}
@Override
public void doSomething(){
super.doSomething();
doMoreThings();
}
private void doMoreThings(){
System.out.println("do more things.");
}
/**
* 新增的方法不是Component接口的一部分,
* 所以不能通过Component接口透明地访问。
*/
public void doOtherThings(){
System.out.println("do other things.");
}
}
发表评论
-
[原]导出CodeHelp的数据
2009-03-16 17:05 803搬到blogjava总得发点原创的东西吧。 Code ... -
[原]使用Ant实现zip压缩解压功能
2009-03-19 13:17 1668[关键词]:ant,zip,unzip,Apache,压缩,解 ... -
[原]EL函数的使用
2009-04-03 21:29 1069[标题]:EL函数的使用 [时 ... -
[原]对Class.getMethod()的调用未经检查
2009-04-05 15:52 2318[标题]:对Class.getMethod()的调用未经检查 ... -
[原]JNI简单示例
2009-04-05 21:33 1000[标题]:JNI简单示例 [时 ... -
[原]简单工厂模式
2009-04-14 12:26 718[关键字]:java,设计模式,简单工厂,《java与模式》 ... -
[原]工厂模式
2009-04-14 12:32 692[关键字]:java,design pattern,设计模式, ... -
[原]抽象工厂模式
2009-04-14 19:25 716[关键字]:java,design pattern,设计模式, ... -
[原]方法返回值为数组的另一种表示方法
2009-04-25 22:28 932[时间]:2009-04-25 今天看到JDK的源代码 ... -
[原]SAX使用示例
2009-04-26 19:18 2015[标题]:[原]SAX使用示例 [时间]:2009-4-25 ... -
[原]责任链模式
2009-05-09 16:47 692[关键字]:java,design pattern,设计模式, ... -
[原]状态模式
2009-05-18 23:03 743[关键字]:java,design pattern,设计模式, ... -
[原]策略模式
2009-05-21 22:21 659[关键字]:java,design pattern,设计模式, ... -
[原]VC实现重启路由器
2009-05-29 23:36 2040[标题]:[原]VC实现重启路 ... -
[原]远程登录Windows Server 2003的当前会话
2009-06-01 11:19 2030[标题]:远程登录Windows Server 2003的当前 ... -
[原]Tomcat crossContext
2009-06-01 12:27 6019[标题]:Tomcat crossContext [时间]:2 ... -
[原]装饰模式3-Grep
2009-06-07 22:42 655[关键字]:java,design pattern,设计模式, ... -
[原]合成模式-透明的
2009-06-08 22:23 727[关键字]:java,design pattern,设计模式, ... -
[原]合成模式-安全的
2009-06-08 22:27 798[关键字]:java,design pattern,设计模式, ... -
[原]模板方法模式
2009-06-15 17:05 636[关键字]:java,design pattern,设计模式, ...
相关推荐
装饰模式的一个简单实例,小猪吃苹果的游戏,每吃一种苹果,增加一种不同的功能。装饰模式是在不必改变原类文件和使用继承的情况下,动态的扩展一个对象的功能。
java设计模式【之】装饰者模式【源码】【场景:煎饼果子+肠+蛋】 * 测试类【之】煎饼果子来一套 * * 不改变原有对象的基础上,强化已经存在的功能 * 被装饰者与装饰者实现同一个抽象或接口 * 装饰后,最终还是...
demo python使用装饰器(Decorator)的方式实现单例模式 functools.wraps 则可以将原函数对象的指定属性复制给包装函数对象, 默认有 __module__、__name__、__doc__,或者通过参数选择
装饰模式 外观模式 享元模式 代理模式 行为模式(类行为模式) 解释器模式 模板方法模式 行为模式(对象行为模式) 策略模式 观察者模式 状态模式 导入模式 迭代器模式 命令模式 职责链模式 进来者模式 访问者模式 ...
装饰器模式,在不修改原程序结构的情况下,而动态的实现添加或者修改新的功能,有点类似注入的感觉。@清秀男儿。
装饰模式是在不必改变原类文件和使用继承的情况下,动态地扩展一个对象的功能。它是通过创建一个包装对象,也就是装饰来包裹真实的对象。 装饰者模式结构图: 装饰者模式角色: (1)抽象构件(Component)角色:给...
装饰者模式(Decorator Pattern):在不改变原类和继承的情况下动态扩展对象功能,通过包装一个对象来实现一个新的具有原对象相同接口的新的对象。 装饰者模式的特点: 1. 在不改变原对象的原本结构的情况下进行功能...
装饰模式是在不必改变原类文件和使用继承的情况下,动态地扩展一个对象的功能。它是通过创建一个包装对象,也就是装饰来包裹真实的对象。 UML类图: 角色: 组件对象的接口:可以给这些对象动态的添加职责 所有装饰...
英文原书名: Design Patterns:Elements of Reusable Object-Oriented software 作者: Erich Gamma 等 译者: 李英军 马晓星 蔡敏 刘建中 书号: 7-111-07575-7 页码: 254 定价: ¥35.00 会员价: ¥31.50 币值: 315 ...
装饰者模式就是不修改原类代码和继承的情况下动态扩展类的功能。传统的编程模式都是子类继承父类实现方法重载,使用装饰器模式,只需添加一个新的装饰器对象,更加灵活,避免类数量和层次过多。 角色: Component...
那么我们就可以使用装饰着模式。 装饰着模式可以动态地给某个对象添加一些额外的职责,从而不影响这个类中派生的其他对象。 装饰着模式将一个对象嵌入另一个对象之中,实际上相当于这个对象被另一个对象包装起来,...
Ruby设计模式的中文pdf高清扫描版本和英文原版本pdf文件。 本书是一本关于设计模式方面的重点书籍。本书以通俗易懂的方式介绍了Ruby设计模式,主要包括Ruby概述、使用模板方法变换算法、使用策略替换算法、通过观察...
代码为个人手写,原属于本人某次实验的一部分,可能存在bug,仅供参考。相关博客地址:https://blog.csdn.net/l1393452711/article/details/106421348
装饰模式:装饰模式以对客户端透明的方式扩展对象的功能,是继承关系的一个替代方案, 装饰模式 提供比继承更多的灵活性。动态给一个对象增加功能,这些功能可以再动态的撤消。增加由 一些基本功能的排列组合而产生...
4.4 decorator(装饰)—对象结构型 模式 115 4.5 facade(外观)—对象结构型 模式 121 4.6 flyweight(享元)—对象结构型 模式 128 4.7 proxy(代理)—对象结构型 模式 137 4.8 结构型模式的讨论 144 ...
博客原地址:http://blog.csdn.net/lhy_ycu/article/details/40031567
装饰者模式原封不动的使用原接口,系统对装饰的对象也通过原接口来完 成使用。(增加新接口的装饰者模式可以认为是其变种--"半透明"装饰者) 3.关于其包裹的对象:适配器是知道被适配者的详细情况的(就是那个类或...
1设计模式入门欢迎来到设计模式世界 2观察者模式让你的对象知悉现况 3装饰者模式装饰对象 4工厂模式烘烤OO的精华 5单件模式独一无二的对象 6命令模式封装调用 7适配器模式与外观模式随遇...
装饰模式指的是在不必改变原类文件和使用继承的情况下,动态地扩展一个对象的功能。它是通过创建一个包装对象,也就是装饰来包裹真实的对象。 示例: A、B、C编辑同一篇文章。 class Article{ protected $content;...