gpt4 book ai didi

java - 生成单例

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:00:37 25 4
gpt4 key购买 nike

这听起来像是一个奇怪的想法,我还没有仔细考虑过。

例如,假设您有一个应用程序最终需要一定数量的单例来执行某些 I/O。您可以编写一个单例,基本上可以根据需要多次重现代码。

但是,作为程序员,我们应该想出有创意的解决方案,避免任何形式的冗余或重复。什么是制作多个东西的解决方案,每个东西都可以充当单例。

P.S:这是针对无法使用Spring等框架的项目。

最佳答案

你可以像这样引入一个抽象:

public abstract class Singleton<T> {
private T object;

public synchronized T get() {
if (object == null) {
object = create();
}
return object;
}

protected abstract T create();
}

然后对于每个单例,你只需要这样写:

public final Singleton<Database> database = new Singleton<Database>() {
@Override
protected Database create() {
// connect to the database, return the Database instance
}
};

public final Singleton<LogCluster> logs = new Singleton<LogCluster>() {
...

然后你可以通过编写database.get()来使用单例。如果尚未创建单例,则会创建并初始化它。

人们可能这样做,而更喜欢重复这样写的原因:

private Database database;

public synchronized Database getDatabase() {
if (database == null) {
// connect to the database, assign the database field
}
return database;
}

private LogCluster logs;

public synchronized LogCluster getLogs() {
...

是因为最终每个单例只多了一行代码,并且初始化单例模式出错的可能性非常低。

关于java - 生成单例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3125882/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com