Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/design-patterns/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/cmake/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 用简单的英语来说,什么是单身汉?_Java_Design Patterns_Singleton - Fatal编程技术网

Java 用简单的英语来说,什么是单身汉?

Java 用简单的英语来说,什么是单身汉?,java,design-patterns,singleton,Java,Design Patterns,Singleton,我已经在谷歌上搜索了大约一个小时,但我仍然不清楚单身是什么。有没有人能让我更清楚一点,或者发布一个代码示例 我所知道的是,一个给定类只能有一个实例。但是你就不能用一个静态类来实现吗 提前谢谢 singleton模式是一种限制 将类实例化为一个对象 请注意类的简单静态实例和 singleton:虽然singleton可以实现为静态 例如,它也可以惰性地构造,不需要内存或内存 资源,直到需要。另一个显著的区别是静态 成员类不能实现接口,除非该接口是 只是一个标记。因此,如果类必须实现一个契约 根据接

我已经在谷歌上搜索了大约一个小时,但我仍然不清楚单身是什么。有没有人能让我更清楚一点,或者发布一个代码示例

我所知道的是,一个给定类只能有一个实例。但是你就不能用一个静态类来实现吗

提前谢谢

singleton模式是一种限制 将类实例化为一个对象

请注意类的简单静态实例和 singleton:虽然singleton可以实现为静态 例如,它也可以惰性地构造,不需要内存或内存 资源,直到需要。另一个显著的区别是静态 成员类不能实现接口,除非该接口是 只是一个标记。因此,如果类必须实现一个契约 根据接口,它必须是一个单体


简单的纯英语版本中可以看出,单例类是一个只有并且只能有一个实例的类

但是你就不能使用一个静态类吗

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

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

在Java1.5(又名Java5)之前,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;
        }
    }
Java1.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;
        }
    }

singleton是一个带有私有构造函数的类,您只能得到它的一个实例。为了进一步解释为什么要使用这种编码风格,我建议您阅读本书中有关单件的章节


第五章是关于单身人士的

检查维基和维基上的参考链接。如果一个类只有一个对象(实例),那么这个对象称为“单例”。你可能会认为只有一个对象,但这就是邪恶的开始。用简单的英语来说,单身是有史以来最糟糕的想法。可能的+1重复:终于有人用简单的英语给出了最简单的答案。你的代码示例让我明白了一切。非常感谢你