设计模式之装饰模式
来源:互联网 发布:js table 导出excel 编辑:程序博客网 时间:2024/06/05 21:53
一、装饰模式
1.装饰模式定义:动态的给一个对象添加一些额外的职责,就增加功能来说,装饰模式比生成子类更加灵活。
2.装饰模式的UML
3.装饰模式的示例
/** * 装饰模式是为已有功能动态的添加更多功能的一种方式 * 它把每个要装饰的功能放在单独的类中,并让这个类包装它所要装饰的对象,因此,当需要执行特殊行为时, * 客户端代码可以在运行时根据需要有选择的和按顺序的使用装饰功能包装对象。 * * 把类中的装饰功能从类中搬移出去,简化原有类 * 有效的把类的核心职责和装饰功能区分开了,而且可以去除相关类中重复的装饰逻辑 * * 首先有一个对象 * 然后有一个具体实现类和一个抽象类继承这个对象 * 然后有一堆装饰功能类继承这个抽象类,实现不同的装饰功能 * * java中的IO流就是装饰者模式 * @author shier * */class Finery extends Person{ protected Person person; //这是打扮方法放入不同的类 public void Decorate(Person person) { this.person = person; } @Override public void show() { if(person != null){ person.show(); } }}class TShirts extends Finery{ @Override public void show() { System.out.print("大TShift "); super.show(); }}class BigTrouser extends Finery{ @Override public void show() { System.out.print("垮裤 "); super.show(); }}public class Person { private String name; public Person(){ } public Person(String name) { this.name = name; } public void show(){ System.out.println(String.format("装扮的{0}", name)); } public static void main(String[] args) { Person p = new Person("十二"); TShirts t = new TShirts(); BigTrouser bt = new BigTrouser(); System.out.println("装扮开始"); t.Decorate(p); bt.Decorate(t); bt.show(); }}
0 0
- 设计模式之装饰
- 设计模式之装饰
- 设计模式之装饰
- 设计模式之装饰模式
- 设计模式之装饰模式
- 设计模式之装饰模式
- 设计模式之装饰模式
- 设计模式之装饰模式
- 设计模式之 装饰模式
- 设计模式之-装饰模式
- 设计模式之装饰模式
- 设计模式之装饰模式
- 设计模式之装饰模式
- 设计模式之装饰模式
- 设计模式之装饰模式
- 设计模式之装饰模式
- 设计模式之装饰模式
- 设计模式之装饰模式
- 一个好的网页想要让客户浏览的时间必须具备的七个要素
- RxJava上手(二)
- Centos7安装Kafka
- layoutInflateException中的原因之一
- redis持久化
- 设计模式之装饰模式
- Android之“Handler内部类引起的内存溢出警告”
- android studio2.3以后给apk签名打包后安装失败的问题[INSTALL_PARSE_FAILED_NO_CERTIFICATES]
- Mysqldump参数大全(参数来源于mysql5.5.19源码)
- bind9涉及到的文档
- 2017-04-13 DBA日记,当sga_target=0 和memory_target=0还会自动调整内存的研究
- 【腾讯云的1001种玩法】零基础微信机器人实践-云技术对个人开发者的影响
- 自定义view(三):onDraw 之 Canvas
- mybatis做like模糊查询