为什么要有单例设计模式 为什么要用单例模式( 二 )


例如,当系统运行时,我们需要加载一些配置和属性 。这些配置和属性必须存在并且是公共的 。同时 , 它们需要在整个生命周期内存在,所以只需要一个副本 。这时候如果我再需要的时候需要一个新的,然后再给他赋值,显然是浪费内存 , 再赋值也没有意义 。所以这个时候我们需要singleton模式或者静态方法来维护一个且只有一个副本,但是这个时候这些配置和属性都是通过面向对象编码得到的,所以要用singleton模式,或者不是面向对象,但是它本身的属性应该是面向对象的 。虽然我们可以用静态方法解决问题 , 但最好的解决方案应该是singleton模式 。
从功能上讲,singleton模式可以控制单例的数量;可以进行有意义的推导;对实例的创建有更自由的控制;
三 。其他:
数据库连接可以是单例的吗?
如果只是简单的在SingleTon对象中封装一个connection对象,那是错误的,所以连接池中有多个链接可用 。如果使用singleton , 访问WEB时只能使用一个数据库链接 。那不是死得很惨吗?
然而,单例模式可以用在连接池中 。例如,在初始化期间创建100个连接对象 , 然后在需要时提供一个 。用后放回水池 。我们使用单例模式来确保只有一个连接池 。
再比如 , 调用数据库表的类是用DAL层写的 。当这个类应用于BLL层时,如果每次都是新创建的,就需要频繁的创建和回收 。但是DAL层中没有与这个类中的对象相关的值变量,所以没有必要每次都创建一个新的 。此时,您可以使用singleton模式来创建这个DAL实例 。