Java装饰设计模式
来源:互联网 发布:nginx 禁止某ip访问 编辑:程序博客网 时间:2024/05/21 19:29
1、 理解生活的装饰
生活中一些人、事、物,经过一些点缀,看起来,发生了一些改变,这些改变称为装饰,原有事物的本质内容没有发生改变。
2、 java装饰设计模式的含意
一个工作任务,经过一些点缀,表面上看起来发生一些改变,这每一次改变,就是一次装饰,这种设计方式就装饰设计模式。
例如
一行文字,可以有N多种装饰
加下划线
加粗
斜体
。。。
3、 编程要点
1) 写一个工作任务,2个类文件
一个接口
一个接口的实现子类
2) 写一个抽象装饰类
这是一个代理设计模式
3) 写具体装饰类
有几次装饰,就写几个类
4、 示例代码
工作任务类,2个文件
public interface ITask {
void print();
}
public class ImplTask implements ITask{
public ImplTask() {
Log.getLog().info("this="+this);
}
@Override
public void print() {
System.out.println("<div>这是原始网页文本输出</div>");
}
}
抽象装饰类,1个文件
public abstract class AbsTask implements ITask{
private ITask task;
public AbsTask(ITask task) {
this.task=task;
}
@Override
public void print() {
task.print(); //这是一个代理设计模式
}
}
具体装饰类,多个文件,每一次装饰多一个文件
public class Concret_Decorator_1 extends AbsTaskimplements ITask{
public Concret_Decorator_1(ITask task) {
super(task);
}
@Override
public void print() {
System.out.println("<b>");
super.print(); //原有工作不变,在此加粗字体
System.out.println("</b>");
}
}
public class Concret_Decorator_2 extends AbsTaskimplements ITask{
public Concret_Decorator_2(ITask task) {
super(task);
}
@Override
public void print() {
System.out.println("<u>");
super.print(); //原有工作不变,在此加:下划线
System.out.println("</u>");
}
}
public class Concret_Decorator_3 extends AbsTaskimplements ITask{
public Concret_Decorator_3(ITask task) {
super(task);
}
@Override
public void print() {
System.out.println("<b>");
super.print(); //原有工作不变,在此加:斜体
System.out.println("</b>");
}
}
检测类,1个文件
public class TestDecorator {
/**
* @param args
*/
public static void main(String[] args) {
//构建原始工作任务
ITask task=new ImplTask();
task.print();
//执行第1次装饰
System.out.println("第1次装饰的效果");
ITask dec1=new Concret_Decorator_1(task);
dec1.print();
//执行第2次装饰
System.out.println("第2次装饰的效果");
ITask dec2=new Concret_Decorator_2(dec1);
dec2.print();
//执行第3次装饰
System.out.println("第3次装饰的效果");
ITask dec3=new Concret_Decorator_3(dec2);
dec3.print();
}
}
5、 处理效果
iss.pattern.decorator.ImplTask.<init>(ImplTask.java:14)11-27 16:45:07>
this=iss.pattern.decorator.ImplTask@1ebdb06
<div>这是原始网页文本输出</div>
第1次装饰的效果
<b>
<div>这是原始网页文本输出</div>
</b>
第2次装饰的效果
<u>
<b>
<div>这是原始网页文本输出</div>
</b>
</u>
第3次装饰的效果
<b>
<u>
<b>
<div>这是原始网页文本输出</div>
</b>
</u>
</b>
- Java装饰设计模式
- Java 装饰设计模式
- Java 装饰设计模式
- java 装饰设计模式
- Java 装饰设计模式
- java 装饰设计模式
- Java装饰设计模式
- Java 装饰设计模式
- Java装饰设计模式
- Java 设计模式 --装饰模式
- Java 设计模式-----装饰模式
- java设计模式-装饰模式
- java设计模式---装饰模式
- java设计模式-装饰模式
- 【Java设计模式】装饰模式
- java设计模式-装饰模式
- java设计模式--装饰模式
- java设计模式---装饰模式
- Java8学习笔记
- java程序员的大数据之路(12):Hadoop的守护进程
- HDU
- Python资源汇总
- 171123 逆向-TLS回调函数
- Java装饰设计模式
- python编码
- 网格从左下角移动到右上角有多少种路线(动态规划)
- lucene源代码学习之FST(Finite State Transducer)在SynonymFilter中的实现思想
- MFC学习笔记8 对话框与程序连接
- Mysql批量操作2(批量删除)
- Netty—基本使用介绍
- Java InstanceOf 和C# is
- 第7次C练习