Java设计模式之装饰模式
来源:互联网 发布:淘宝联盟客服热线 编辑:程序博客网 时间:2024/06/03 17:10
模式介绍
装饰模式是使用一种对客户端透明的方式来动态地扩展对象的功能,同时它也是继承关系的一种替代方案之一。装饰模式相比生成子类更为灵活。
应用场景
需要透明且动态地扩展类的功能时。生活中也能看到很多装饰模式的例子,例如衣服上的装饰物,各种搭配等等。
代码例子
下面用一个房子带花园,带泳池的例子来实现一下装饰模式。
房屋抽象类
/** * 房屋 * @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()); }}
打印
有花园的有泳池的住宅有花园的住宅
阅读全文
0 0
- Java设计模式之装饰设计模式
- Java之装饰设计模式
- java设计模式之装饰
- Java设计模式之装饰模式
- Java设计模式之装饰模式
- java设计模式之装饰模式
- Java设计模式之二装饰模式
- JAVA设计模式之装饰模式
- java设计模式之装饰者模式
- java设计模式之装饰模式Decorator
- JAVA设计模式之装饰模式
- JAVA 设计模式之装饰模式
- JAVA设计模式之装饰模式
- java 设计模式之装饰模式
- Java设计模式之装饰者模式
- Java设计模式笔记之装饰模式
- Java设计模式之装饰器模式
- java 设计模式 之 装饰模式
- maven启动报错
- C# 数组、ArrayList和List<T>的区别
- AngularJS学习1
- Android 自定义Wifi信号指示View
- HDU 1498 50 years, 50 colors(二分图最小覆盖数)
- Java设计模式之装饰模式
- pydata p26 图片显示不出来
- Java之HashMap与HashTable
- 第三章:3.3 傅里叶级数收敛分析
- 密码学MD5|DES|RSA加密解密(内有源码)
- 查询表达式转变为elasticsearch查询语句
- vtk基础02观察者/命令机制
- Maven-maven多模块项目搭建+Dubbo分布式服务框架 budong
- 华为机试—整数与IP地址间的转换