gpt4 book ai didi

java - 加载资源的好方法

转载 作者:太空宇宙 更新时间:2023-11-04 08:41:30 26 4
gpt4 key购买 nike

我正在用 Java 开发一个服务器应用程序。我需要从不同来源(XML 和数据库)加载一些资源。因此,我需要一些关于如何干净地实现加载的建议。

我有一个“ServerX”类,它创建一些“内存”对象,这些对象将保存加载的资源。

我发现了两种不同的加载方式,但都看起来很脏。

1

public class ServerX
{
/**
Will hold the houses for further use.
*/
private Memory<House> houses;

public ServerX()
{
houses = new Memory<House>();

loadHouses();
loadXX();
loadYY();
LoadZZ();
Load...
}

private void loadHouses()
{
//Pseudo code
List<House> loaded = loadHousesFromDatabase();
houses.addAll(loaded);
}

private void loadXX();

...
}

但是这样,它就会淹没我的“ServerX”类。

2

public interface Loader
{
public void loadHouses(Memory<House> toFill);
public void loadXX(Memort<XX> toFill);
public void loadYY(Memort<YY> toFill);
public void loadZZ(Memort<ZZ> toFill);
}

public class SimpleLoader implements Loader
{
//Implements methods.
}

public class ServerX
{
/**
Will hold the houses for further use.
*/
private Memory<House> houses;

public ServerX(Loader loader)
{
houses = new Memory<House>();
loader.loadHouses(houses);
loader.loadXX...
}
}

但是这样,我想我陷入了 Poltergeist 反模式,因为我创建了一个新的加载器只是为了向数据库/XML 文件发出请求,然后它被垃圾收集。

那么,还有其他方法可以做到这一点吗?或者我的解决方案是否足够好?

谢谢。

最佳答案

您可以考虑的一种模式是 Service Locator图案。服务定位器的解释可以找到here .

基本上,服务定位器是一个注册表+缓存的组合,用于查找一次资源并将其保存在内存中,以便在应用程序的生命周期中进行对象检索。 Service Locator主要是使用Singleton pattern来实现的.

关于java - 加载资源的好方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5212591/

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