10

我已经在谷歌上搜索了大约一个小时,但我仍然不清楚单身人士是什么。谁能让我更清楚一点,也许可以发布一个代码示例?

我所知道的是,您只能拥有给定类的一个实例。但是你就不能为此使用静态类吗?

提前致谢!

4

3 回答 3

12

简单的普通英语1版本是:Singleton Class 是一个 Class ,只有一个实例

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

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

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

在 Java 1.5(又名 Java 5)之前,Java 中不支持单例设计模式。您只是用纯 Java 实现了它们;例如

    /** 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 - 当然,您需要了解“类”和“实例”的含义。由于这些词的编程/IT 英语含义与“简单英语”的含义不同,因此称其为“简单英语”描述有点牵强。另一方面,如果读者还没有理解“类”和“实例”的含义,那么他们就没有理解“单例”概念所需的基础知识,也没有理解其中的意义。

于 2013-02-20T07:15:03.710 回答
1

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

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

第 5 章是关于单例的

于 2013-02-20T07:27:04.203 回答
0

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

注意类的简单静态实例和单例之间的区别:虽然单例可以实现为静态实例,但它也可以延迟构造,在需要时不需要内存或资源。另一个显着的区别是静态成员类不能实现接口,除非该接口只是一个标记。因此,如果该类必须实现由接口表示的契约,那么它确实必须是单例。

全部来自维基百科

于 2013-02-20T07:01:49.683 回答