java设计模式--装饰模式
2017-07-06 13:49
507 查看
装饰模式:
动态的将责任附加给了对象,使对象易于横向和总想扩展,提供了比继承更有弹性的替代方案。
我们来看一下代码片段
创建一个要唱歌的人
//把这个人包装成为一个歌手
//这个歌手正在唱歌
//装饰A–唱歌的时候伴舞
//装饰B–唱歌的时候有音乐
//装饰C–唱歌完毕后,经历介绍
优点:其拓展性十分良好,通过使用不同的装饰类来使得对象具有多种多样的属性,灵活性比直接继承好。
缺点:产生了过多的装饰类,代码难于理解,不易于排错。
项目地址:https://github.com/lichenyigit/designModel3-decorate.git
动态的将责任附加给了对象,使对象易于横向和总想扩展,提供了比继承更有弹性的替代方案。
我们来看一下代码片段
创建一个要唱歌的人
/** * @author Lichenyi * @date 2017-7-6 */ public interface Human { public void sing(); }
//把这个人包装成为一个歌手
/** * @author Lichenyi * @date 2017-7-4 */ public class Singer implements Human { @Override public void sing(){ System.out.println("我唱唱唱......"); } }
//这个歌手正在唱歌
/** * @author Lichenyi * @date 2017-7-5 */ public class SingerSing extends Singer { private Singer singer; public SingerSing(Singer singer){ this.singer = singer; } @Override public void sing() { singer.sing(); } }
//装饰A–唱歌的时候伴舞
/** * @author Lichenyi * @date 2017-7-5 */ public class SingerDecorateA extends SingerSing{ public SingerDecorateA(Singer singer) { super(singer); } @Override public void sing() { decorate(); super.sing(); } private void decorate(){ System.out.println("伴舞.."); } }
//装饰B–唱歌的时候有音乐
/** * @author Lichenyi * @date 2017-7-5 */ public class SingerDecorateB extends SingerSing{ public SingerDecorateB(Singer singer) { super(singer); } @Override public void sing() { decorate(); super.sing(); } private void decorate(){ System.out.println("播放背景音乐.."); } }
//装饰C–唱歌完毕后,经历介绍
/** * @author Lichenyi * @date 2017-7-5 */ public class SingerDecorateC extends SingerSing{ public SingerDecorateC(Singer singer) { super(singer); } @Override public void sing() { super.sing(); decorate(); } private void decorate(){ System.out.println("经历介绍.."); } }
优点:其拓展性十分良好,通过使用不同的装饰类来使得对象具有多种多样的属性,灵活性比直接继承好。
缺点:产生了过多的装饰类,代码难于理解,不易于排错。
项目地址:https://github.com/lichenyigit/designModel3-decorate.git
相关文章推荐
- Java设计模式之装饰模式
- Java 设计模式 --装饰模式
- Java设计模式之二装饰模式
- java 设计模式学习笔记九 decorator装饰模式
- java IO包 与 装饰设计模式 浅谈
- java 设计模式 学习笔记(5) 装饰模式
- java设计模式之装饰模式
- java设计模式---------装饰模式
- Java设计模式之装饰模式
- java 设计模式学习笔记九 decorator装饰模式
- java设计模式之装饰模式(decorator)
- Java 设计模式-----装饰模式
- java设计模式:装饰器模式[Decorator]
- JAVA设计模式之装饰模式
- Java设计模式-----Decorator装饰模式
- java IO之装饰设计模式
- Java设计模式之装饰模式
- Java设计模式之装饰模式
- 浅谈 java 设计模式--装饰模式(Decorator pattern)
- java中装饰设计模式(decorator)