您的位置:首页 > 编程语言 > Java开发

Java进阶笔记(装饰者模式)

2016-05-18 21:41 267 查看

Java开发模式之装饰者(Decorator)模式

2016/4/27 20:21:02 Seventeen Wen

对象增强的手段:

继承

装饰者模式

动态代理

什么时候使用装饰模式?

需要扩展一个类的功能,或者给一个类加附加责任。

需要动态地给一个对象增加功能,这些功能可以再动态地撤销。比如给文件加密的操作。

需要增加有一些基本功能的排列组合而产生的非常大量的功能,从而是继承关系变得不现实。

class 配料类{}

class 腊肠 extends 配料类{}

class 肥牛 extends 配料类{}

class 蛋 extends 配料类{}

配料 a = new 腊肠();
配料 b = new 肥牛(a);// 加腊肠和加肥牛
配料 c = new 蛋(b);//加腊肠,加肥牛和加蛋


DBPC中的应用

package com.seventeenwen.decorator
// 这个类实现了Connection接口,有Connection的所有方法
public class ConnectionWrapper implements Connection{
// 底层对象,需要被增强的对象
protected Connection con;
//通过构造器来传递底层对象
public ConnectionWrapper(Connection con){
this.con = con
}
public void close() throws SQLException{
con.close();
}
.......

.......
}

----------------------------------------------------------------------
package com.seventeenwen.decorator
public class MyConnection extends ConnectionWrapper{
public MyConnection(Connection con){
super(con);
}
public void close() throws SQLException{

system.out.print("增强的close()");
super.close();

}

}

Connection con = dataSource.getConnection();
Connection con1 = new MyConnection(con);
//调用普通的Close()
con.Close();
//调用增强的Close();
con1.Close();
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: