设计模式学习之装饰模式
2018-03-27 12:59
267 查看
属于对象组合。package wwx.test;
interface Handler {
void execute();
}
class A implements Handler {
@Override
public void execute() {
System.err.println("执行A逻辑");
}
}
class B implements Handler {
private A a;
B(A a) {
this.a = a;
}
@Override
public void execute() {
// TODO Auto-generated method stub
a.execute();
System.err.println("执行B逻辑");
}
}
class C implements Handler {
private B b;
C(B b) {
this.b = b;
}
@Override
public void execute() {
// TODO Auto-generated method stub
b.execute();
System.err.println("执行C逻辑");
}
}
public class Test {
public static void main(String[] args) {
new B(new A()).execute();
System.err.println("-------------");
new C(new B(new A())).execute();
}
}总结:
装饰模式是扩展对象的功能,而且类继承是增加对象的功能。
比如一个对象可以喝水,但是我要吃饭,这里用继承。
但是我要优雅的喝水,用装饰模式。
interface Handler {
void execute();
}
class A implements Handler {
@Override
public void execute() {
System.err.println("执行A逻辑");
}
}
class B implements Handler {
private A a;
B(A a) {
this.a = a;
}
@Override
public void execute() {
// TODO Auto-generated method stub
a.execute();
System.err.println("执行B逻辑");
}
}
class C implements Handler {
private B b;
C(B b) {
this.b = b;
}
@Override
public void execute() {
// TODO Auto-generated method stub
b.execute();
System.err.println("执行C逻辑");
}
}
public class Test {
public static void main(String[] args) {
new B(new A()).execute();
System.err.println("-------------");
new C(new B(new A())).execute();
}
}总结:
装饰模式是扩展对象的功能,而且类继承是增加对象的功能。
比如一个对象可以喝水,但是我要吃饭,这里用继承。
但是我要优雅的喝水,用装饰模式。
相关文章推荐
- java设计模式学习笔记之装饰模式
- 设计模式学习笔记-装饰模式
- 【设计模式学习笔记十】【结构型模式】【装饰模式(Decorator)】
- 学习设计模式————装饰模式
- 黑马程序员-学习日志-装饰设计模式
- 设计模式学习--装饰模式
- 设计模式学习笔记--装饰模式
- JAVA学习第四十九课 — IO流(三):缓冲区2 & 装饰设计模式
- 设计模式学习总结(8) 装饰模式
- 黑马程序员-Java学习笔记之设计模式(单例设计模式,装饰设计模式,模板设计模式)
- 基础学习总结之装饰设计模式
- 学习php设计模式 php实现装饰器模式(decorator)
- 设计模式学习笔记(2)之装饰模式(Decorator)
- 设计模式学习-装饰器模式
- 设计模式学习笔记之-适配器和装饰器的区别
- 设计模式学习-装饰模式
- Java设计模式学习09——装饰模式
- 设计模式学习--装饰模式
- 设计模式学习笔记之装饰器模式
- 我是如何学习设计模式的六:装饰模式