装饰设计模式
- 专门为解决某一类问题,而编写的固定格式的代码
- 装饰者固定结构:接口A,已知实现类C,需要装饰者创建代理类B
- 创建B,并实现A接口
- 提供B类的构造方法,参数类型为A,用于接收A接口的实现类C
- 给类B添加类型为A的成员变量,用于存放A接口的其他实现类
- 增强需要的方法
- 实现不需要增强的方法,方法体重调用成员变量存放的其他实现类对应的方法
- A接口的实现类C作为参数传递,需要增强C的某个方法,创建A接口实现类B包裹C,修改该方法,然后把B替代C作为参数传递
[Java]
纯文本查看
复制代码
01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 | A a = c;B b = new B(c);class B implement A { private A a; public B(A a) { this.a = a; } //需要增强的方法 public void close() { ... } //需要增强的方法 public void commit() { ... }} |
[Java]
纯文本查看
复制代码
01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | //1.实现同一个接口Connectionpublic class MyConnection implements Connection { //3.定义一个变量 private Connection conn; private LinkedList<Connection> pool; // 2.编写一个构造方法(参数使用了面相对象的多态特性) public MyConnection(Connection conn,LinkedList<Connection> pool) { this.conn=conn; this.pool=pool; } //4.书写需要增强的方法 @Override public void close() throws SQLException { pool.add(conn); } /** * 此方法必须覆盖!否则会出现空指针异常!!! */ @Override public PreparedStatement prepareStatement(String sql) throws SQLException { return conn.prepareStatement(sql); }} |
更多技术咨询可关注:gzitcast