静态方法&实例化类中的变量

时间:2013-12-15 19:34:00

标签: java static

说我有一个班级Person,它有一个方法doSomething()。我创建了static ArrayList<Person> people和方法doSomethingToAllPeople(),为doSomething()中的每个Person调用people。我应该将peopledoSomethingToAllPeople()放在Person班级还是其他PersonManager班级?它甚至重要吗?以下是一些示例代码:

class Person
{
    public void doSomething()
    {
        //stuff here
    }
}

//where should the following code go?
static List<Person> people = new ArrayList<Person>();
for(int i = 0; i < 10; i++)
{
    people.add(new Person());
}
static void doSomethingToAllPeople()
{
    for(Person person : people)
    {
        person.doSomething();
    }
}

1 个答案:

答案 0 :(得分:1)

简而言之,这无关紧要,是一个偏好问题。但是,如果您需要我的意见,我会考虑让您的Person课程独立于您的Person集合。将这两个部分保持分离可以保持类的灵活性,而关于Java的一个好处就是它可以让你创建漂亮的,包含的,可重用的类。
考虑一个实现PersonRegistry类>工厂设计模式。它可能有一个创建Person实例的方法,并在返回之前将此实例添加到集合中。这样可以在保持Person独立和灵活的同时实现所需的功能。