什么是单身人士,用简单的英语?

时间:2013-02-20 06:58:22

标签: java design-patterns singleton

我现在一直在谷歌搜索大约一小时,我仍然不清楚单身是什么。任何人都可以让我更清楚一些,也许可以发布代码示例吗?

我知道你是否只能拥有一个给定类的一个实例。但是你不能只为那个使用静态类吗?

提前致谢!

3 个答案:

答案 0 :(得分:7)

简单的英文版本是Singleton类,是一个只有一个实例的类。

  

但是你不能为此使用静态类吗?

没有。这不是Java中的“静态”类。在Java中,“静态”类可以像任何其他类一样拥有多个实例。

static关键字(用于类)用于表示嵌套类的实例未绑定到封闭类的特定实例。这意味着嵌套类中的表达式不能引用封闭类中声明的实例变量。

在Java 1.5(又名Java 5)之前,Java中没有对单例设计模式的支持。你只是用普通的Java实现它们; e.g。

    /** There is only one singer and he knows only one song */
    public class Singer {
        private static Singer theSinger = new Singer();
        private String song = "I'm just a singer";

        private Singer() { 
            /* to prevent instantiation */
        }

        public static Singer getSinger() { 
            return theSinger; 
        }

        public String getSong() {
            return song;
        }
    }

Java 1.5引入了enum类型,可用于实现单例等。

    /** There are two Singers ... no more and no less */
    public enum Singer {
        DUANE("This is my song"),
        RUPERT("I am a singing bear");

        private String song;

        Singer(String song) {
            this.song = song;
        }

        public String getSong() {
            return song;
        }
    }

答案 1 :(得分:0)

  

单例模式是一种限制条件的设计模式   将类实例化为一个对象。

     

注意类的简单静态实例和a之间的区别   singleton:虽然单例可以实现为静态   例如,它也可以懒惰地构造,不需要记忆或   资源直到需要。另一个值得注意的区别是静态   成员类无法实现接口,除非该接口是   只是一个标记。所以,如果班级必须实现合同表达   通过界面,它必须是一个单身人士。

全部来自Wikipedia

答案 2 :(得分:0)

singleton是一个带有私有构造函数的类,你只能获得它的一个实例。为了进一步解释为什么这种编码风格已经完成,我建议你阅读本书中关于单身人士的章节

http://www.wowebook.com/book/head-first-design-patterns/

第5章是关于单身人士的