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

来源:互联网 发布:网络直播项目计划书 编辑:程序博客网 时间:2024/05/16 06:37

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

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

对象增强的手段:

  1. 继承
  2. 装饰者模式
  3. 动态代理

什么时候使用装饰模式?

  1. 需要扩展一个类的功能,或者给一个类加附加责任。
  2. 需要动态地给一个对象增加功能,这些功能可以再动态地撤销。比如给文件加密的操作。
  3. 需要增加有一些基本功能的排列组合而产生的非常大量的功能,从而是继承关系变得不现实。

    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();
0 0
原创粉丝点击