Java设计模式之六:装饰模式
来源:互联网 发布:灰鸽子远程控制源码 编辑:程序博客网 时间:2024/05/17 06:08
装饰模式属于设计模式中较为重要的一个模式了,在jdk IO中也有应用,有没有对下面的这句话很熟悉。
BufferedReader bf=new BufferedReader(new InputStreamReader(new FileInputStream(path)));//字符流读取文件的方式,当然字符流是基于字节流的。
其实这个就是装饰者模式,给FileInputStream添加了一层又一层装饰。
public abstract class Decortor extends Human{private Human human;public Decortor(Human human) {this.human=human;}@Overridepublic void wearCloth() {human.wearCloth();}}
这个就是装饰模式的UML图,
COmponent一般是抽象类或者接口,而Decorator则是继承Component的一个抽象类,内部封装了private的component对象,用来调用方法。
第一步创建抽象类或者接口,里面的是抽象方法 wearCloth。
public abstract class Human { public abstract void wearCloth();}第二步:创建实体类继承抽象类,这个类指的是被装饰的实体,同时还有初始化。
public class RealMan extends Human{@Overridepublic void wearCloth() {System.out.println("我该穿什么呢");}}第三步:创建装饰者的抽象类继承Human抽象类
public abstract class Decortor extends Human{private Human human;public Decortor(Human human) {this.human=human;}@Overridepublic void wearCloth() {human.wearCloth();}}
第四步:创建装饰的类
public class Decortor1 extends Decortor{public Decortor1(Human human) {super(human);}public void wearCloth(){super.wearCloth();System.out.println("先穿大衣");}}
public class Decortor2 extends Decortor{public Decortor2(Human human) {super(human);}public void wearCloth(){super.wearCloth();System.out.println("再穿牛仔");}}
测试:
@Testpublic void test() {RealMan realMan=new RealMan();Decortor1 decortor1=new Decortor1(realMan);Decortor2 decortor2=new Decortor2(decortor1);decortor2.wearCloth();}
阅读全文
0 0
- Java设计模式之六:装饰模式
- 设计模式之六 装饰模式
- Java设计模式之装饰设计模式
- Java设计模式(六) 代理模式 VS. 装饰模式
- Java设计模式(六) 代理模式 vs. 装饰模式
- Java之装饰设计模式
- java设计模式之装饰
- Java设计模式之装饰模式
- Java设计模式之装饰模式
- java设计模式之装饰模式
- Java设计模式之二装饰模式
- JAVA设计模式之装饰模式
- java设计模式之装饰者模式
- java设计模式之装饰模式Decorator
- JAVA设计模式之装饰模式
- JAVA 设计模式之装饰模式
- JAVA设计模式之装饰模式
- java 设计模式之装饰模式
- UVa1025 A Spy in the Metro
- 剑指offer-树中两个节点的最低公共祖先
- Django使用
- Java—Myshopping—类的无参方法
- redis实现秒杀思路
- Java设计模式之六:装饰模式
- 搜索算法--线性搜索、二分搜索、内插搜索、剪枝搜索
- @Controller和@RestController的区别?
- 乘法器
- ios-Segue
- 《学习笔记记录》UE4在WINDOWS平台交叉编译LINUX项目及遇到的问题MSB3075
- js中的几种跨域方法
- 一起从零学Kotlin-20170728
- 触摸屏代码分析——实现ADC转换完成中断