标签: singleton

DriverManager类是Java中的Singleton吗?

这个来源我读到:

您可能有使用JDBC驱动程序的经验.例如,类加载器尝试加载和链接"org.gjt.mm.mysql"包中的Driver类.如果成功,则调用静态初始化程序.

Class.forName("org.gjt.mm.mysql.Driver"); 
Connection con = DriverManager.getConnection(url,"myLogin", "myPassword"); 
Run Code Online (Sandbox Code Playgroud)

让我们看看为什么需要Class.forName()将驱动程序加载到内存中.所有JDBC驱动程序都有一个静态块,它使用DriverManager注册自己,而DriverManager只有静态初始化程序.

MySQL JDBC驱动程序有一个静态初始化程序,如下所示:

 static {
     try {
         java.sql.DriverManager.registerDriver(new Driver());
     } catch (SQLException E) {
         throw new RuntimeException("Can't register driver!");
     } }
Run Code Online (Sandbox Code Playgroud)

这是否意味着DriverManager是Singleton类?

java singleton

0
推荐指数
1
解决办法
965
查看次数

单身类设计问题

下面是使用单例设计模式的类:

class Singleton
{
    private static Singleton instance;
    private Singleton()
    {
        ...
    }

    public static synchronized Singleton getInstance()
    {
        if (instance == null)
            instance = new Singleton();

        return instance;
    }
    ...
    public void doSomething()
    {
        ... 
    }
}
Run Code Online (Sandbox Code Playgroud)

我想知道关于上述课程的一些设计问题?为什么实例变量是instance私有的和静态的.我知道私有使实例变量只能访问该特定类的对象,但它如何帮助?

java singleton design-patterns

0
推荐指数
1
解决办法
296
查看次数

Java中的单身人士

这个单例实现在给定的多线程应用程序中是否正常:没有序列化,反序列化

public class NewSingleton {

    private static final NewSingleton RAJNI= new NewSingleton();

    private NewSingleton(){

    }

    public static NewSingleton getInstance() {
        return RAJNI;
    }    
}
Run Code Online (Sandbox Code Playgroud)

java singleton

0
推荐指数
1
解决办法
162
查看次数

两个单例示例之间的差异

A级1

public class A {

    private static final A instance = new A();

    public static A getInstance() {
        return new A();
    }

}
Run Code Online (Sandbox Code Playgroud)

A级2

public class A {

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

}
Run Code Online (Sandbox Code Playgroud)

我刚开始学习单例,我看到了两个使用A 1示例和A 2示例的Java示例.A 1级getInstance()是单身吗?我也想知道这两个A类getInstance()方法有什么区别?谢谢

java singleton instance

0
推荐指数
1
解决办法
229
查看次数

单例实例被垃圾收集?

我认为单例实例不应该被垃圾收集,但是我维护了一个单例对象,并在初始化时标记它,如下所示:

private static LocalCache instance;

public LocalCache() {
    // initialize objects......
}

public static LocalCache getInstance() {
    if (instance == null) {
        instance = new LocalCache();
        Log.e("instance", "new");
    }
    return instance;
}
Run Code Online (Sandbox Code Playgroud)

我发现这个日志在我的应用程序中不止一次出现.更确切地说,我在FragmentActivity中有5个片段.当我按下主页按钮执行某项任务并切换回活动时,单例类似乎被重新分配.我的代码中有什么问题吗?或者我可以阻止重新创建片段吗?我确定我没有为实例分配null.

@Override
protected void finalize() throws Throwable {
    Log.e("finalize", "finalize");
}
Run Code Online (Sandbox Code Playgroud)

我也覆盖finalize()它以查看它何时被销毁,但是日志没有出现在第二个"新实例"日志之前.

singleton android fragment

0
推荐指数
1
解决办法
1025
查看次数

这是哪种单身人士?

public class ConnectionManager {

    private static Map <String, ConnectionManager> managerInstances = new HashMap<String, ConnectionManager>();

    private String dsKey;
    private ConnectionManager(String dsKey){
        this.dsKey = dsKey;
    }

    public static ConnectionManager getInstance(String dsKey){
        ConnectionManager managerInstance = managerInstances.get(dsKey);

        if (managerInstance == null) {
            synchronized (ConnectionManager.class) {
                managerInstance = managerInstances.get(dsKey);
                if (managerInstance == null) {
                    managerInstance = new ConnectionManager(dsKey);
                    managerInstances.put(dsKey, managerInstance);
                }
            }
        }
        return managerInstance;
    }
}
Run Code Online (Sandbox Code Playgroud)

我最近在GoF的书籍定义中没有使用Singleton模式的地方看到了这段代码.Singleton正在存储一个Map自己的实例.

这可以称为什么样的单身人士?或者这是Singleton的有效使用?

java singleton design-patterns

0
推荐指数
1
解决办法
119
查看次数

如果Singletons不好,那么如何为框架存储全局状态

如果单例被认为对全局状态不利,特别是可能影响代码主要执行的状态,那么应该如何处理全局状态呢?

想到的直接事情是:

  • 基本网址
  • 基本文件路径
  • 一般配置
  • 记录实例
  • 等等

我不能看到除了单身之外的任何其他方式来访问这些,如App()类或类似的?

java oop singleton design-patterns

0
推荐指数
1
解决办法
660
查看次数

如何为Singleton类创建多个实例

我使用延迟初始化方法创建了一个Singleton类.这就是getInstance方法是同步的.但是,如果不改变设计模式,有一种方法可以创建Singleton类的多个实例.因为更改Singleton模式将需要进行大量的体系结构更改.请建议一种创建多个实例的方法.请帮助Java.

java singleton design-patterns object instance

0
推荐指数
1
解决办法
1万
查看次数

Android:拥有永远不会被杀死的Singleton类

在我的Android应用程序中,我有一个Singleton类.当应用程序任务存活时,它就像一个魅力.但是在应用程序任务被杀死之后,Singleton类被破坏了,这显然是.我需要让这堂课永远活着.可能吗?什么是使这个类从未被Android系统杀死的最佳方法,在这种情况下我是否需要使用后台服务?

java service singleton android task

0
推荐指数
1
解决办法
789
查看次数

Objective-C Singleton中的变量被重置

我创建了一个Objective-C Singleton类.我在课堂上有一些属性,包括BOOL属性.由于一些奇怪的原因BOOL,我声明的变量在设置的范围之外"重置"为YES.

在Singleton类的头文件中,BOOL使用@property以下参数声明:

@property (nonatomic, assign, readonly) BOOL shouldCryptData;
Run Code Online (Sandbox Code Playgroud)

在实现中的Singleton类@interface中,我重新定义了相同的属性readwrite(因为我需要它只能读取到外部类,而是读取/写入我自己的).

@interface SingletonClassName ()
    @property (nonatomic, assign, readwrite) BOOL shouldCryptData;
@end
Run Code Online (Sandbox Code Playgroud)

BOOL在单例类的初始化期间设置该属性.我在其中一个init方法中设置它.有多种init方法可以指定是否应该加密数据 - 这只是设置位置的一个示例.只有一个我的init方法调用super,所有其他方法调用main init.

- (id)init {
    self = [super init];
    if (self) {
        // Brief setup code

        [self setShouldCryptData:NO]; // Have also tried using dot-notation and without *self*
        // I can confirm that the shouldCryptData property is NO (within the current scope) …
Run Code Online (Sandbox Code Playgroud)

variables singleton properties objective-c ios

0
推荐指数
1
解决办法
2330
查看次数