大话设计模式之装饰模式
装饰模式
装饰器模式(Decorator Pattern)允许向一个现有的对象添加新的功能,同时又不改变其结构。这种类型的设计模式属于结构型模式,它是作为现有的类的一个包装。
通过下列代码加深下理解
//通用接口
public interface Learning {public void Learn();}//具体实现类
public class Hero implements Learning {String name;public Hero (String name){this.name=name;}@Overridepublic void Learn() {System.out.println(name+"-正在学习技能ing");}
}//装饰类
public class QHeroDecorate implements Learning {Hero hero ;public QHeroDecorate (Hero hero){this.hero = hero;}@Overridepublic void Learn() {hero.Learn();ReturnCity();}public void ReturnCity(){System.out.println("学习了回城技能");}
}//main测试
public class MainTest {public static void main(String[] args){Hero hero = new Hero("达摩");Learning learning = new QHeroDecorate(hero);learning.Learn();}
}
//输出结果
达摩-正在学习技能ing
学习了回城技能
装饰模式的特点
(1) 装饰对象和真实对象有相同的接口。这样客户端对象就能以和真实对象相同的方式和装饰对象交互。
(2) 装饰对象包含一个真实对象的引用(reference)
(3) 装饰对象接受所有来自客户端的请求。它把这些请求转发给真实的对象。
(4) 装饰对象可以在转发这些请求以前或以后增加一些附加功能。这样就确保了在运行时,不用修改给定对象的结构就可以在外部增加附加的功能。在面向对象的设计中,通常是通过继承来实现对给定类的功能扩展。
优点:装饰类和被装饰类可以独立发展,不会相互耦合,装饰模式是继承的一个替代模式,装饰模式可以动态扩展一个实现类的功能。
缺点:多层装饰比较复杂。
使用场景: 1、扩展一个类的功能。 2、动态增加功能,动态撤销。
注意事项:可代替继承。
转载于:https://www.cnblogs.com/chenpt/p/9395834.html
大话设计模式之装饰模式相关推荐
- 大话设计模式之装饰模式(python实现)
大话设计模式之装饰模式 使用场景 定义 装饰模式结构图 python实现装饰模式 代码结构图 优点 使用场景 建造过程不稳定,不确定.把所需的功能按照正确的顺序串联起来进行控制. 新加入的东西仅仅是为 ...
- 大话设计模式C++版——装饰模式
女人常说男人喜新厌旧.仅仅见新人笑,那闻旧人哭,但装饰模式(Decorator)却是一种结交新朋友不忘老朋友的设计模式,很适合去古代当老公(现代是不行的.由于仅仅能娶一个老婆了).装饰模 ...
- 大话设计模式—装饰模式
装饰模式(Decorator Pattern)允许向一个现有的对象添加新的功能,同时又不改变其结构.这种类型的设计模式属于结构型模式,它是作为现有的类的一个包装. 这种模式创建了一个装饰类,用来包装原 ...
- 大话设计模式——装饰模式
需求 写一个给人模拟搭配不同服饰的程序,可以给人换各种各样的衣服裤子的形象. 初步实现 需求比较简单,直接上代码: public class Person {private String name;p ...
- 设计模式之装饰模式(Decorator)摘录
23种GOF设计模式一般分为三大类:创建型模式.结构型模式.行为模式. 创建型模式抽象了实例化过程,它们帮助一个系统独立于如何创建.组合和表示它的那些对象.一个类创建型模式使用继承改变被实例化的类,而 ...
- 【Python】《大话设计模式》Python版代码实现
<大话设计模式>Python版代码实现 上一周把<大话设计模式>看完了,对面向对象技术有了新的理解,对于一个在C下写代码比较多.偶尔会用到一些脚本语言写脚本的人来说,很是开阔眼 ...
- 【大话设计模式】设计模式系统学习大合集
转载请注明出处:http://blog.csdn.net/column/details/designpatternbylmb.html 为了方便各位网友学习以及方便自己复习之用,将设计模式的系列内容按 ...
- 《大话设计模式》读书笔记-索引
<大话设计模式>读书笔记-第1章 简单工厂模式 <大话设计模式>读书笔记-第2章 策略模式 <大话设计模式>读书笔记-第3章 单一职责原则 <大话设计模式&g ...
- 《大话设计模式》读后感
第一次读<大话设计模式>,是在刚接触C#的时候.疲累于大部头的官方教材中时,无意间翻开了这本生动有趣的书,甚是眼前一亮.由于当时C#基础薄弱,只是把它当小说来看,如饥似渴,饶有滋味,一口气 ...
最新文章
- docker配置国内镜像源
- 关于installshield安装界面上installshield字样的删除问题
- 【讨论贴】关于父实子虚的疑问???
- GDCM:提取DICOM文件数据元素值字段的测试程序
- 页面滚动到指定class样式位置
- 字节输出流的续写和换行
- mysql索引及优化
- typescript断言
- 信用卡套现只要正常还款,银行是不是睁只眼闭只眼?
- 【架构师】【数据库基础】【笔记 01】快速了解数据库系统的重要概念01
- 简单粗暴的多目标跟踪神器 – DeepSort
- HTML 图片加载问题
- 借助Sigar API获取操作系统信息
- 体验Windows server 2012上安装SQL 2012
- Operating System-Thread(3)用户空间和内核空间实现线程
- H5页面内实现分享给微信好友功能
- 关于NB-IoT的十大问题和答案
- MATLAB计算卫星相对位置、速度和加速度
- DispatcherServlet详细分析
- 学习C的知识点扩展2--make和makefile多文件编译的使用