|
|
1
15
有几种方法可以在Java中实现单例模式:
关于在集群中使用单个实例…我不确定“使用”的定义是什么…面试官是否暗示在集群中创建单个实例?我不确定这是否有意义。。。? 最后,在spring中定义一个非单例对象只需通过singleton=“false”属性即可。 |
|
|
2
2
我不同意“无可挽回”。 单例的作用域是它在类加载器树中的节点。它包含类加载器,任何子类加载器都可以看到Singleton。 理解这个作用域的概念很重要,特别是在具有复杂类加载器层次结构的应用服务器中。
类加载器是Java和JVM中最重要的概念之一,而singleton就是其中之一,因此我认为Java程序员“关心”这一点很重要。 |
|
|
3
2
至于更高级别的单例——也许我很傻——但我倾向于分发JVM本身(并限制类装入器)。那么枚举就足够了。 |
|
|
4
1
Singleton通常通过一个静态实例对象来实现(
|
|
|
5
1
如果没有技术背景,这个问题的第一部分很难回答。如果集群平台能够像调用本地对象一样对远程对象进行调用(例如,在引擎盖下使用RMI或IIOP的ejb可以这样做),那么是的。例如,驻留JVM的单例对象可以是集群范围的单例对象的代理,该单例对象最初是通过JNDI或其他方式定位/连接的。但是集群范围内的单例是一个潜在的瓶颈,因为对其中一个单例代理的每次调用都会导致对单个远程对象的(昂贵的)RPC。 问题的第二部分是springbean工厂可以配置不同的作用域。默认情况下是单例(作用域在webapp级别),但也可以是会话或请求作用域,或者应用程序可以定义自己的作用域机制。 |
|
|
6
0
一个静态字段可以在一个JVM中多次出现—通过使用不同的类装入器,可以多次装入和初始化同一个类,但每个类都是孤立的,JVM将结果装入的类视为完全不同的类。
我们每个集群能有一个单子吗?那是个概念游戏。我不希望面试官这样说。 |
|
|
7
0
|
|
|
8
0
Singleton是一种创造性的模式,因此控制对象实例化。创建单例将强制要求您自愿或非自愿地放弃对创建对象的控制,而是依赖某种方式获得对它的访问权。 这可以通过使用静态方法、依赖注入或使用工厂模式来实现。手段是无关紧要的。对于普通的protected constructor()方法,consumer perforce需要使用静态方法来访问singleton。在DI的情况下,使用者自愿放弃对类实例化的控制,而是依赖DI框架将实例注入自身。
|
|
9
0
以下代码来自 here
|
|
|
10
0
查询1:
相关SE问题: What is an efficient way to implement a singleton pattern in Java? 问题2:
实现集群级
|
|
|
11
0
单体设计模式的意图:
我在这里展示了三种类型的实现。
|