A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

在编写程序的时候,什么时候会用到单例模式呢?

评分

参与人数 1技术分 +1 收起 理由
陈丽莉 + 1

查看全部评分

6 个回复

倒序浏览
单例就是保证一个类在使用过程中只有一个实例  并且只有一个实例。

比如天安门 可以是一个类  这个类只有一个实体还是天安门

在使用单例设计模式的时候 建议你使用饿汉式  它随着类的加载就进行了实例化

评分

参与人数 1技术分 +1 收起 理由
陈丽莉 + 1

查看全部评分

回复 使用道具 举报
单例模式,顾名思义,肯定是你的实例在同一时间只会显示一个的时候才用嘛。单例最大的好处在于,你可以在任何类中,即使是root.aaa.bbb.ccc.ddd......xxx中都可以直接引用这个类的唯一实例。据个例子,比如我们在游戏中,鼠标移动到装备上会有提示框,告诉你这件装备的属性。这里就可以用单例来实现。我们监听每一件装备的MouseOver事件,然后通过单例来让最顶层出现一个跟随鼠标的属性框。当其他装备触发MouseOver的时候,我们只要告诉这个属性框改变内容就可以了

评分

参与人数 1技术分 +1 收起 理由
陈丽莉 + 1

查看全部评分

回复 使用道具 举报
你好,
如果你用想保证内存中只有一份这个类的对象,这时就要使用单例设计模式!
还有一种情况,当你想让类中的变量被其他类共享这个变量。就将类设计成单例,并把类的对象作为参数传给使用者。
创建单列有两种方式:懒汉式,和饿汉式
代码:

//饿汉式
class SingleTest
{
        private static final SingleTest single=new SingleTest();
        private void Singletest(){};
        public static SingleTest getInstance()
        {
                return single;
        }
}
//懒汉式
class Single2
{
        private static Single2 single=null;
        private void Single2(){};
        public static Single2 getInstance()
        {
                if(single!=null)
                        synchronized(Single2.class)
                        {
                                if(single!=null)
                                        single=new Single2();
                        }
                        return single;
        }

}

评分

参与人数 1技术分 +1 收起 理由
陈丽莉 + 1

查看全部评分

回复 使用道具 举报
liuyangyang 发表于 2013-4-9 15:54
你好,
如果你用想保证内存中只有一份这个类的对象,这时就要使用单例设计模式!
还有一种情况,当你想让类 ...

如果 还是不够清楚,你可以看下 张孝祥老师的“银行业务调试系统”中有应该。
回复 使用道具 举报
比如连用户接数据库,要是处理每个用户连接都new一个实例,服务器不累死^_^
回复 使用道具 举报
当一个类的实例可以有且只可以一个的时候就需要用到了。为什么只需要有一个呢?有人说是为了节约内存,但这只是单例模式带来的一个好处。只有一个实例确实减少内存占用,可是我认为这不是使用单例模式的理由。我认为使用单例模式的时机是当实例存在多个会引起程序逻辑错误的时候。
单例模式顾名思义,就是只有一个实例。
作为对象的创建模式, 单例模式确保某一个类只有一个实例,而且自行实例化并向整个系统提供这个实例,
这个类我们称之为单例类。
单例模式的要点有三个:
一是某个类只能有一个实例;
二是它必须自行创建这个实例;
三是它必须自行向整个系统提供这个实例。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马