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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 侯丛政 中级黑马   /  2013-2-27 16:12  /  1332 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

        private NumberMachine(){
               
        }

        public static NumberMachine getInstance(){
                return instance;
        }
        private static NumberMachine instance = new NumberMachine();

换成如下代码会有什么不妥?
//        public static NumberMachine getInstance(){
//                return new NumberMachine();
//        }

张老师银行业务调度系统中NumberMachine要设计成单例的, 为什么不能在方法里面获得NumberMachine对象呢?

3 个回复

倒序浏览
如果换成你的那个 每次调用getInstance()方法的时候,就会返回一个新的NumberMachine对象
这就不是单例设计模式了
回复 使用道具 举报
单例要保证对象的唯一性    如果你改成你那样的    每次调用方法就会返回一个新对象,也就没什么单例可言了
回复 使用道具 举报
单例模式是一种常用的软件设计模式,在应用这个模式时,单例对象的类必须保证只有一个实例存在。许多时候整个系统只需要拥有一个的全局对象,这样有利于我们协调系统整体的行为。
实现单例模式的思路是:一个类能返回对象一个引用(永远是同一个)和一个获得该实例的方法(必须是静态方法,通常使用getInstance这个名称);当我们调用这个方法时,如果类持有的引用不为空就返回这个引用,如果类保持的引用为空就创建该类的实例并将实例的引用赋予该类保持的引用;同时我们还将该类的构造函数定义为私有方法,这样其他处的代码就无法通过调用该类的构造函数来实例化该类的对象,只有通过该类提供的静态方法来得到该类的唯一实例。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马