首页 新闻 会员 周边

单件模式求详解

0
悬赏园豆:100 [待解决问题]

是么是单间模式?哪些地方会用到单件模式?举个简单的例子,不要网上粘贴的。

嘉华的主页 嘉华 | 初学一级 | 园豆:106
提问于:2012-05-30 09:50
< >
分享
所有回答(6)
0

建议你去看李建忠老师讲的设计模式视频,很有意义,其中讲到Singleton 单件(创建型模式)

┢┦偉 | 园豆:1240 (小虾三级) | 2012-05-30 09:58
1

主要是因为在软件系统中,有一些特殊的类,必须保证它们在系统中只存在一个实例,才能确保它们的逻辑正确性、以及良好的效率,这时就要用到单件模式。

参考博文:.NET设计模式(2):单件模式(Singleton Pattern)

 

artwl | 园豆:16736 (专家六级) | 2012-05-30 10:00
0

单件模式就是你希望在应用中唯一存在的模式,无论你在任何地方以任何方式获得的实体对象都是同一个目标对象。

比如,我们做Web开发的,在PAGE页面中,我们能直接使用Context对象,同时,我们也可以通过System.Web.HttpContext.Current来获得,这里,无论什么时候,都必须保证这个HttpContext的实体对象是相同的,便采用了单件模式来实现。

无论使用何种方式获得单件模式对象,为了确保单件模式的正确运行,都会通过单件实体对象的类型的构造函数来控制实现,因为这个方案是最简单有效的,如以下代码:

public class MySingltonEntity
{
    private MySingletonEntity()
    {
    }
    private static MySingletonEntity _instance;
    public static MySigletonEntity Instance
    {
        get
        {
                return _instance ?? _instance = new MySingletonEntity();
        }
    }
}

当然,在具体实现的时候,也会有一些变通,比如,构造函数可以是internal的(在模块内保证唯一),也可以是public的(此时需要对构造函数检测单件对象是否已经构造,如果已经构造则抛出异常)。还可以通过一个Create方法来获得,如:

public class MySingltonEntity
{
    private MySingletonEntity(object param)
    {
    }
    private static MySingletonEntity _instance;
    public static MySigletonEntity Create(object param)
    {
        return _instance ?? _instance = new MySingletonEntity(param);
    }
}

也可以通过工厂的方式提供(当然,这个不是工厂模式)。

在进行EF或LINQ TO SQL的程序设计的时候,代码中,往往也需要对DbContext或ObjectContext或DataContext执行类似单件模式的操作(这里不是纯粹的单件模式),因为只有在同一个Context之下,对数据实体的操作才是可以互相关联的。

无之无 | 园豆:5095 (大侠五级) | 2012-05-30 10:01
-3

最煎蛋的例子

QQ

一个QQ号只能在一个地方登录

同时在其他地方登录时会挤掉另一个

你可以想像下如果两个地方QQ同时在线会带来的影响

许多应用程序一样会遇到这类问题

ERS | 园豆:728 (小虾三级) | 2012-05-30 10:18
-3

为了保证在多线程中修改同一数据不会冲突

慧☆星 | 园豆:5640 (大侠五级) | 2012-05-30 10:38
0

简单地说就是把一些信息载页面一加载的时候放到缓存中,提高了取用效率

嘉华 | 园豆:106 (初学一级) | 2012-06-18 17:32
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册