Java设计模式之装饰模式
2017-08-22 21:53
204 查看
模式介绍
装饰模式是使用一种对客户端透明的方式来动态地扩展对象的功能,同时它也是继承关系的一种替代方案之一。装饰模式相比生成子类更为灵活。应用场景
需要透明且动态地扩展类的功能时。生活中也能看到很多装饰模式的例子,例如衣服上的装饰物,各种搭配等等。代码例子
下面用一个房子带花园,带泳池的例子来实现一下装饰模式。房屋抽象类
/** * 房屋 * @author S * */ public abstract class House { public abstract String getDesc(); }
住宅实体类
/** * 住宅 * @author S * */ public class Flat extends House{ @Override public String getDesc() { // TODO Auto-generated method stub return "住宅"; } }
装饰者
/** * 装饰者 * @author S * */ public abstract class Decorator extends House{ public abstract String getDesc(); }
花园装饰
/** * 花园装饰 * @author S * */ public class GardenDecorator extends Decorator{ private House house; public GardenDecorator(House house){ this.house = house; } @Override public String getDesc() { // TODO Auto-generated method stub return "有花园的"+house.getDesc(); } }
游泳池装饰
/** * 游泳池装饰 * @author S * */ public class SwimmingPoolDecorator extends Decorator{ private House house; public SwimmingPoolDecorator(House house){ this.house = house; } @Override public String getDesc() { // TODO Auto-generated method stub return "有泳池的"+house.getDesc(); } }
Main
/** * 设计模式之装饰者模式 */ public class Main { public static void main(String args[]){ //有花园有泳池 House house1 = new GardenDecorator(new SwimmingPoolDecorator(new Flat())); //有花园 House house2 = new GardenDecorator(new Flat()); System.out.println(house1.getDesc()); System.out.println(house2.getDesc()); } }
打印
有花园的有泳池的住宅 有花园的住宅
相关文章推荐
- java笔记--设计模式之装饰模式
- java中常用的设计模式-装饰设计模式
- java设计模式之装饰模式
- JAVA设计模式五之装饰模式
- Java——设计模式(装饰模式_IO)
- 8.2_java学习_装饰设计模式
- java设计模式----装饰器模式
- JAVA设计模式(11):结构型-装饰模式(Decorator)
- Java经典设计模式-结构型模式-装饰模式(Decorator)
- java设计模式---装饰模式篇
- (转)java之装饰设计模式和继承的简单区别
- Java 设计模式 --装饰模式
- (三)Java设计模式--装饰器模式
- [转]设计模式在Java I/O中的应用(装饰模式和适配器模式)
- Java设计模式-适配器模式和装饰模式
- Java结构型设计模式-装饰(二)
- java设计模式——结构型模式专题(一)装饰模式
- Java进阶篇设计模式之五-----外观模式和装饰器模式
- Java 设计模式(20)--装饰模式
- Java设计模式_(结构型)_装饰模式