使用多个类而不创建每个类的对象

时间:2017-03-15 10:47:45

标签: java

我是java和stackoverflow的新手

我有

    class Assemble()
    class Start()
    class Ignite()
    class Move()

...... There are still 12 classes 

我想在这些类中使用方法 但是

  • 我不应该创建它们的对象
  • 我也不能使用延伸所有这些

我有什么可能吗? 请袒露任何愚蠢,我无法弄明白。 这是我的第一个问题。

最后一堂课是

 class run
    {
    public void run_simple()
    {                  
// hear i should be able to access all methods of above class
    }
    }

1 个答案:

答案 0 :(得分:3)

如果您使用面向对象的语言(如java),那么整个程序就是创建和使用对象(如许多注释中所述)。 有一些有效的技术原因不创建对象和使用静态方法("它很乏味" 其中之一)。有些环境禁止使用继承。

请说明这些原因,否则我们必须假设您不了解面向对象语言的一些基本概念以及您的"限制"必须被忽略。

大多数"限制"面向对象编程旨在帮助您构建解决方案/程序。如果你认为它们是真正的限制,你的程序结构可能会很糟糕。

我想提供一个示例,了解这样的事情看起来如何" OO方式"。这可能与您的项目不完全匹配,但应该向您展示创建对象不一定是程序员努力的问题。

首先我们需要一个界面来定义你的一个动作(我称之为你的类)是什么样的

interface Action {
  public void run();
}

以下类定义具体操作。他们的构造函数可能会参数配置有关如何执行它们的详细信息。在每个类的run() - 方法中,您可以对执行时的操作进行编程。

class Assemble implements Action {
  public void run() {...}
}
class Start implements Action {...} 
class Ignite implements Action {...} 
class Move implements Action {...}

控制器执行"运行所有内容"。这基本上是你的"开销"用于创建对象!

class Controller {

  /** Returns a list of the configured action objects. */
  public static List<Action> buildActions() {
    List<Action> actions = new LinkedList<Action>();
    actions.add(new Assemble(parameter));  // or whathever parameters you need
    actions.add(new Start(parameter1, parameter2));
    actions.add(new Ignite());
    actions.add(new Move());
  }

  /** Build the list of actions and run one after the other. */
  public static void main(String[] args) {
    List<Action> actions = buildActions();
    for (Action action: actions) {
      action.run();
      // here you could add logging, profiling etc. per Action.
    }
  }
}