我在设计游戏库中的部件方面有问题。我在分离类中有更多的部分(例如匹配、调度器、Auth、EventProcessor、.)。
运行时将使用一个实例(不需要两个调度程序或匹配类)。我看到了访问这些类的多种方法。
在下面的文本中,ProductName是库的名称,PartName是类名。
对此最好的设计方法是什么?
谢谢你的回答!
诚挚的问候!
发布于 2014-10-13 11:27:58
当您需要在项目中有一个和一个类的实例时,您可能需要应用单例软件模式。这样,项目中总是只有Singleton的一个实例。此代码是Singleton的一个示例,测试包括:
ClassicSingleton.java:
public class ClassicSingleton {
private static ClassicSingleton instance = null;
protected ClassicSingleton() {
// Exists only to defeat instantiation.
}
public static ClassicSingleton getInstance() {
if(instance == null) {
instance = new ClassicSingleton();
}
return instance;
}
}
SingletonTestCase.java:
import org.apache.log4j.Logger;
import junit.framework.Assert;
import junit.framework.TestCase;
public class SingletonTest extends TestCase {
private ClassicSingleton sone = null, stwo = null;
private static Logger logger = Logger.getRootLogger();
public SingletonTest(String name) {
super(name);
}
public void setUp() {
logger.info("getting singleton...");
sone = ClassicSingleton.getInstance();
logger.info("...got singleton: " + sone);
logger.info("getting singleton...");
stwo = ClassicSingleton.getInstance();
logger.info("...got singleton: " + stwo);
}
public void testUnique() {
logger.info("checking singletons for equality");
Assert.assertEquals(true, sone == stwo);
}
}
结果:
Buildfile: build.xml
init:
[echo] Build 20030414 (14-04-2003 03:08)
compile:
run-test-text:
[java] .INFO main: getting singleton...
[java] INFO main: created singleton: Singleton@e86f41
[java] INFO main: ...got singleton: Singleton@e86f41
[java] INFO main: getting singleton...
[java] INFO main: ...got singleton: Singleton@e86f41
[java] INFO main: checking singletons for equality
[java] Time: 0.032
[java] OK (1 test)
正如您在结果中看到的那样,所使用的两个单例提供了相同的内存引用:Singleton@e86f41
。因此,它们是相同的对象,这是期望的行为。
希望能帮上忙
克莱门西奥·莫拉莱斯·卢卡斯
https://stackoverflow.com/questions/26318870
复制相似问题