我已经读过《 First Java:Design Patterns》一书,是一名新手。

我只是为了练习而制作自己的游戏引擎,并且使用Singleton Pattern(我知道对大多数人来说这是一个罪过)来创建独特的类,例如:InputManager,ScreenManager,GameManager等。我确实发现它很有用,但是我不想违背潮流。

使用Factory方法创建此类(也许将它们创建为内部类),然后将这些对象传递给需要它们的任何类,是否更明智?

那也是不好的做法吗?

我只想确保这些唯一类只有一个实例,并且只有一种访问它们的方式。

也许像:

public final class Factory(){
private static final InputListener inputlst = new InputListener();
private static final Screen window = new Screen();
private static final GameManager gameManager = new GameManager();
public Factory(){
}
public static InputListener getInputListener(){
    return inputlst;
}
public static Screen getWindow(){
    return window;
}
private static class InputListener implements KeyListener, MouseListener, MouseMotionListener, MouseWheelListener{
}
private static class Screen extends JFrame{
}
private static class GameManager{
}

最佳答案

坦率地说,存在模式是有原因的。原因很简单。您希望将来对代码进行什么更改。没有什么像good practice to use patterns。在期望更改的位置使用您的期望更改,您需要从保持不变的部分开始更改OUT和SEPARATE的部分。当您执行此操作时,这些模式将帮助您理解。

没有辛格尔顿不是邪恶的。它的用法是邪恶的。 Singleton是一种WONDERFUL模式,用于解决OOP和OOAD的非常独特的问题。

无法使用Factory代替SINGLETON。两者都有非常独特的主张。谁知道,如果您花时间仔细了解自己的需求(以及将来的需求),您可能会意识到您需要同时使用两者。您可能只需要一个工厂,并且可能需要使该工厂单例。

Understand the change, the future change and separate out what changes from what remains constant

关于java - 设计查询:在Singleton,Factory等之间进行选择,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/14620018/

10-13 04:13