装饰器设计模式
来源:互联网 发布:非典真实死亡人数知乎 编辑:程序博客网 时间:2024/05/22 15:35
装饰模式可以组合在一起使用。
参考资料:http://blog.csdn.net/janice0529/article/details/44160091
说明:作者还写了很多设计模式的文章。
《设计模式 Java 版》GitHub 书籍。
https://www.gitbook.com/book/quanke/design-pattern-java/details
手机类,是一个接口,它是抽象的。
public interface Phone { public abstract void call();}
手机类的基本实现类(没有额外功能)
苹果手机(基础手机类,没有添加任何的额外功能)
public class IPhone implements Phone{ @Override public void call() { System.out.println("苹果手机可以打电话。"); }}
下面给手机设置额外的功能(重点,抽象,这是核心)
装饰器抽象类(这个类非常重要)
public abstract class PhoneDecorate implements Phone { private Phone phone; public PhoneDecorate(Phone phone){ this.phone = phone; } @Override public void call() { this.phone.call(); }}
装饰器具体的类(通过构造器注入,然后重写父类的方法,在父类方法的前后增加逻辑)
super 这个关键字很重要,决定了是由父类对象实现。自己添加的逻辑,在这个方法的前后,而没有全部覆盖了父类方法。
super 这个关键字很重要,决定了是由父类对象实现。自己添加的逻辑,在这个方法的前后,而没有全部覆盖了父类方法。
super 这个关键字很重要,决定了是由父类对象实现。自己添加的逻辑,在这个方法的前后,而没有全部覆盖了父类方法。
1、可以听音乐的装饰器
public class MusicDecorate extends PhoneDecorate{ public MusicDecorate(Phone phone) { super(phone); } @Override public void call(){ System.out.println("装饰器:手机可以听音乐"); super.call(); }}
2、可以看书的装饰器
public class BookDecorate extends PhoneDecorate { public BookDecorate(Phone phone) { super(phone); } @Override public void call(){ super.call(); System.out.println("装饰器:手机可以看电子书"); }}
测试类:
public class Test { public static void main(String[] args) { Phone myPhone = new BookDecorate(new MusicDecorate(new IPhone())); myPhone.call(); }}
JDK 中的实现类: IO。
0 0
- 装饰器设计模式
- 装饰器设计模式
- 装饰器设计模式
- 装饰器设计模式
- 装饰器设计模式
- 装饰器设计模式
- 装饰器设计模式
- 装饰器设计模式
- 设计模式---装饰器模式
- 设计模式--装饰器模式
- 设计模式<装饰器模式>
- 设计模式-装饰器模式
- 设计模式--装饰器模式
- 设计模式-装饰器模式
- 设计模式--装饰器模式
- 设计模式之装饰器
- Java 装饰器设计模式
- 设计模式之装饰器
- 二三维联动开源框架:ol3-cesium
- Java源码-字体的定义与修改
- win7如何添加开机启动程序(开机就自动运行打开)
- JAVA中单例与多例的实现
- Android关于Context的简单理解
- 装饰器设计模式
- SSH:在网页中添加记住密码的功能
- jquery实现两种轮播效果
- CSU-ACM2016暑假集训比赛1
- 强大的grep命令
- 58.View the Exhibit and examine the parameters.
- 单例模式
- Codeforces Round #364 (Div. 2)【A,C】
- 本地简单json解析Demo