JAVA的设计模式之装饰设计模式

1、装饰设计模式

顾名思义,装饰模式就是给一个对象增加一些新的功能,而且是动态的,要求装饰对象和被装饰对象实现同一个接口,装饰对象持有被装饰对象的实例,关系图如下:

2、看这个图可能不容易理解,举两个例子。

1)首先是IO流中的知识。

相信大家都知道缓冲流。BufferedInputStream,BufferedOutputStream 等等

BufferedInputStream bis = new BufferedInputStream(new FileInputStream(new File("aaa.txt")));

他出现的原因是什么,是因为FileInputStream的效率不高,需要对FileInputStream进行优化,对FileInputStream进行包装之后,就能使他性能变得较高。

这种思想就是装饰设计模式的思想。

当然装饰设计模式也有一些要求。

                    1、编写一个类,实现与被包装类相同的接口。(使这个类和数据库的驱动实现有着相同的行为)
                    2、定义一个类属性,引用被包装类的实例
                    3、定义构造方法,传入被包装类的实例
                    4、对于要改写的方法,编写自己的代码。
                    5、对于不需要改写的方法,调用原有对象的对应方法。

2)数据库连接池

    为了避免用户的每一次请求都需要连接数据库,而数据库创建连接需要相对较大的资源,如果一个网站的访问量较大的话,极大的造成数据库的资源浪费,容易造成数据库的资源浪费,使用数据库的连接池可以有效地解决这个问题。

    用户的每一次请求如果数据库连接池存在连接的话,就在数据库的连接池中取连接。但是我们的这个数据库的连接用完之后如何处理呢,理论上是因该把这个数据库的连接返回到数据库连接池中,但是没有这样的方法来处理。

    此时,可以装饰Connection对象,将其close方法装饰,处理结果是将数据库的连接池用完放回到数据库连接池中。

  

      



原文地址:https://www.cnblogs.com/taotingkai/p/6257298.html