装饰者设计模式
2019-08-16 11:40:16来源:博客园 阅读 ()
1.1 简述及实现原则
装饰模式:在不改变 原有类 和 不使用继承的情况下, 动态地扩展一个对象的功能。
因会创建一个包装对象,来包裹真实对象而得名。
作用:增强对象的功能
例子1:
墙: 功能---遮风挡雨
包了墙纸的墙(本质还是墙):
功能---遮风挡雨
新增功能---陶冶情操
1、没有改变原有类
2、进行动态地增强
装饰类:增强功能的类(包了墙纸的墙)
被装饰类:待增强功能的类(墙)
实现原则:
1、 装饰类 必须 实现 被装饰类的所有接口
2、 装饰类 中 必须获取 被装饰类对象
1.2 案例演示
准备代码
Phone接口:
public interface Phone { void call(String number); void sendMsg(); }
HWPhone实现类:
public class HWPhone implements Phone { public void call(String number) { System.out.println("拨打电话:"+number); } public void sendMsg() { System.out.println("发送短信"); } }
分析:
1、定义一个装饰类 实现 Phone接口
2、装饰类中 获取到 被装饰类对象(成员变量)
代码实现:
HWPhoneDecorator:
public class HWPhoneDecorator implements Phone { //被装饰类的对象 private HWPhone old; public HWPhoneDecorator(HWPhone old) { this.old = old; } /* * 打电话方法不需要增强,不需要改变 * */ public void call(String number) { old.call(number); } /** * 发短信方法需要被增强 */ public void sendMsg() { //1、先运行原来的功能 old.sendMsg(); //2、再执行新的增强代码 System.out.println("(o゜▽゜)o☆[BINGO!]"); } }
测试类:
public static void main(String[] args) { Phone hw = new HWPhoneDecorator(new HWPhone()); hw.call("12345"); hw.sendMsg(); }
未使用装饰者设计模式效果
拨打电话:12345
发送短信
使用装饰者设计模式效果
拨打电话:12345
发送短信
(o゜▽゜)o☆[BINGO!]
作者:xihe
出处:http://www.cnblogs.com/xihelog/
原文链接:https://www.cnblogs.com/xihelog/p/11280456.html
如有疑问请与原作者联系
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
上一篇:聊一聊Java的枚举enum
- 设计模式-委派/策略模式 2020-06-09
- 深入理解:设计模式中的七大设计原则 2020-06-07
- 设计模式---类之间的关系知多少 2020-06-07
- Java--Java的设计模式----单例模式 2020-05-26
- 设计模式之禅读书笔记-22个设计模式 2020-05-25
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash