- 浏览: 958710 次
- 性别:
- 来自: 魔都
文章分类
- 全部博客 (745)
- MultiThread (19)
- My Plan (118)
- JavaBasic (61)
- MyInterview (104)
- InternetTechnique (5)
- ProjectConclusion (1)
- Maven (5)
- MogoDb (5)
- Hadoop (11)
- Memcached (6)
- TechniqueCollect (1)
- Ibaits (1)
- Android (34)
- ItLife (40)
- Tree (2)
- ProjectArchitect (7)
- Open Source (3)
- liunx (5)
- socket (8)
- Spring (27)
- DesginPattern (35)
- WebBasic (13)
- English (13)
- structs (1)
- structs2 (2)
- Oracle (17)
- Hibernate (2)
- JavaScript (4)
- Jdbc (1)
- Jvm (15)
- Ibatis (1)
- DataStructures (13)
- Https/Socket/Tcp/Ip (3)
- Linux (4)
- Webservice (7)
- Io (2)
- Svn (1)
- Css (1)
- Ajax (1)
- ExtJs (1)
- UML (2)
- DataBase (6)
- BankTechnique (3)
- SpringMvc (3)
- Nio (3)
- Load Balancing/Cluster (3)
- Tools (1)
- javaPerformanceOptimization (8)
- Lucene(SEO) (1)
- My Think (80)
- NodeJs (1)
- Quartz (1)
- Distributed-java (1)
- MySql (7)
- Project (4)
- junit (4)
- framework (1)
- enCache (1)
- git (2)
- SCJP (1)
- sd (1)
最新评论
-
lkjxshi:
你都这水平了还考这个证干嘛
SCJP 认证考试指南 -
钟逸华:
问的真多
百度java开发面试题(转) -
zuimeitulip:
觉得我就是这样的,从小阅读量就很少,导致现在的读的速度非常慢, ...
让读书成为一种习惯 -
DDT_123456:
我觉得你是不符合要求。问你hashmap的那个问题,你那样回答 ...
阿里面试2(转) -
jingjing0907:
刚刚写了很多读过此博客的感受,竟然没有发上去,以为我注册账号还 ...
让读书成为一种习惯
三.例子代码:使用装饰模式来演示一个对”行走”功能扩展的例子(听音乐+行走和唱歌+行走) 1. 抽象构件 package com.eekq.decorator; publicinterface Component { /**原始接口*/ publicvoid go(); } 2. 具体构件 package com.eekq.decorator; publicclass ConcreteComponent implements Component { publicvoid go() { System.out.println("行走"); } } 3.装饰角色来了 package com.eekq.decorator; publicclass Decorator implements Component { /**持有私有的原始构件*/ private Component component; /**构造子,委派给原始构件*/ protected Decorator(Component component) { this.component = component; } /**调用原始构件功能,通常就可直接把扩展功能加在此方法中*/ publicvoid go() { this.component.go(); } } 4.具体装饰(这里演示了两种扩展的情况,走路+听音乐和唱歌s) (1). package com.eekq.decorator; publicclass ConcreteDecoratorListen extends Decorator { /**构造子,相关初始化*/ public ConcreteDecoratorListen(Component component) { super(component); // code is here } /**商业逻辑,对原始构件功能的扩展*/ publicvoid go() { listen("听音乐");//执行扩展功能 super.go(); } privatevoid listen(Object obj){ System.out.println(obj); } } (2). package com.eekq.decorator; publicclass ConcreteDecoratorSing extends Decorator { /**构造子,相关初始化*/ public ConcreteDecoratorSing(Component component) { super(component); // code is here } /**商业逻辑,对原始构件功能的扩展*/ publicvoid go() { super.go(); System.out.println(sing());;// 执行扩展功能 } private String sing() { return"唱歌"; } } 5.客户端调用 package com.eekq.decorator; publicclass Main { publicstaticvoid main(String[] args) { /**原始构件*/ Component component = new ConcreteComponent(); /**边听音乐,边走路*/ ConcreteDecoratorListen cdl = new ConcreteDecoratorListen(component); cdl.go(); System.out.println(); /**边走路,边唱歌*/ ConcreteDecoratorSing cds = new ConcreteDecoratorSing(component); cds.go(); } } 四.总结 优点:装饰模式和继承都是对功能的扩展,而装饰模式使用的是组合,可以不用继承而达到这一效果.使用过多的继承会增加系统的复杂性和偶合性 它通过传对象的形式(构造函数传参数)达到增强的目的,而不是继承 缺点:装饰模式要产生一些辅助性的对象,但这些对象看上去都比较像,不是很容易检查(好的命名应该是提高检查的一个办法)
(7).装饰模式:
文章链接:http://www.iteye.com/topic/121149
优点:装饰模式和继承都是对功能的扩展,而装饰模式使用的是组合,可以不用继承而达到这一效果.使用过多的继承会增加系统的复杂性和偶合性
它通过传对象的形式(构造函数传参数)达到增强的目的,而不是继承
缺点:装饰模式要产生一些辅助性的对象,但这些对象看上去都比较像,不是很容易检查(好的命名应该是提高检查的一个办法)
第四个设计模式:装饰模式
装饰模式是对对象功能增强时,平时使用继承的一种替代方案
一.UML示意图:
二.组成部分:
1. 抽象构件:原始的功能接口
2. 具体构件:具体的原始功能类
3. 装饰角色:持有具体构件类的对象,以便执行原有功能
4. 具体装饰:具体扩展的功能在这里
- DesignPatterns.rar (120.8 KB)
- 下载次数: 3
发表评论
-
关于Java 23种设计模式的有趣见解
2013-08-10 18:01 1016关于Java 23种设计模式的有趣见解 [来源] 51CT ... -
Java中常用的设计模式(转)
2013-01-30 12:30 1115下面是我对一些常用设计模式的理解: 模式分为:行为模 ... -
工厂模式,抽象工厂模式,简单工厂的区别
2012-10-10 21:35 9531.抽象工厂模式与工厂方法模式的最大区别就在于,工 ... -
java设计模式之常用设计模式分析
2012-06-05 09:09 1275常用的设计模式有:工厂模式(工厂方法模式,简单工厂模式, ... -
java设计模式之责任链模式(行为模式 )
2012-06-04 14:31 1110(11).责任链模式: 文章链接:http:// ... -
java设计模式之观察着模式(行为模式)
2012-06-04 14:28 990(10).观察着模式Observer 文章链接:ht ... -
java设计模式之适配器模式(结构型模式)
2012-06-04 14:26 668(9).适配器模式 文章链接:http://chjl2 ... -
java设计模式之动态代理模式(结构型模式)
2012-06-04 14:24 1166(8).代理模式: 文章 ... -
java设计模式之代理模式(结构型模式)
2012-06-04 14:22 1053(8).代理模式: ... -
java设计模式之缺省适配器模式(构型模式)
2012-06-03 19:31 1383缺省适配器模式:文章链接:http://jzinfo.itey ... -
java设计模式之模板方法模式(行为模式 )
2012-06-03 19:03 1126package com.createtype.desginpa ... -
java设计模式之——组合模式(结构型模式 )
2012-06-03 18:24 1346接口的作用是什么?定 ... -
java设计模式之——策略模式(行为模式 )
2012-06-03 16:54 1064文章链接:http://yangguangfu ... -
java设计模式之简单工厂模式(创建型模式)
2012-06-01 00:01 1260/** * ## 具体产品(Con ... -
工厂模式,简单工厂模式,抽象工厂模式三者有什么区别
2012-05-31 23:59 1293文章链接: http://blog.csdn.net/ ... -
java设计模式之抽象工厂模式(创建型模式)
2012-05-31 23:57 1140package com.createtype.desgi ... -
java设计模式之工厂方法模式(创建型模式)
2012-05-31 23:56 951package com.createtype.desg ... -
java设计模式之单例模式(创建型模式)
2012-05-30 17:48 1063单列模式: 优点 ... -
java中设计模式分类
2012-05-01 18:31 1146常用的设计模式有:工厂模式(工厂方法模式,简单工厂模式, ... -
Bridge模式(桥接模式)
2012-04-17 22:19 962文章链接:http://airu.itey ...
相关推荐
构型设计课件 8 构型设计的美学基础
构型设计习题解答 17
构型设计课件 9 构型设计的基本方法
构型设计课件 17 部件表示
构型设计制图习题解答:制图答案16.ppt
- **结 构型模式**:如Adapter、Bridge、Composite、Decorator、Facade、Flyweight和Proxy,主要关注如何组合类和对象以形成更大的结构。 - **行 为型模式**:涉及Chain of Responsibility、Command、Interpreter、...
构型设计课件 10 组合体构型及表达
构型设计习题解答 16
构型设计课件 15 常用零件表示
构型设计习题解答 10-12
构型设计习题解答 7
构型设计课件1 制图国家标准简介
构型设计课件 2 投影概念
构型设计课件 12 形体的视图表示
构型设计习题解答 13-14
摘 要:本文针对新型 P2 构型混合动力系统进行工作模式分析,7 种工作模式可以使整 车适应不同的运行工况,e-CVT+CVT 的系统结构使本系统在不同的工作模式下工作时均能 实现多挡运行,保证动力性和经济性。 ...
三维CAD环境下的组合体构型设计知识点主要涉及以下几个方面: 一、三维CAD技术应用 三维CAD技术是计算机辅助设计领域的一个重要分支,它能够帮助设计师在计算机中创建、修改、分析和优化三维模型。随着计算机技术的...
构型设计课件 6 平面的投影
协作机器人构型分析研究主要集中在分析现有典型协作机器人的构型,并探讨构型演化过程中的差异性,从而定义了影响机器人性能的一个重要因素——偏置。偏置是指构型间内在联系及演化过程中的差异,它主要影响关节运动...