有一个Company和一个Person类,一个Company可以拥有多个Person,我是这样设计的,不知道有什么更好的建议没有:Company.java:
public class Company {    private String companyName;
    private List staff;
    
    public Company(String companyName) {
        this.companyName = companyName;
        this.staff = new ArrayList();
    }    public List getStaff() {
        return staff;
    } public String getCompanyName() {
return companyName;
} public void setCompanyName(String companyName) {
this.companyName = companyName;
}
        }
Person.java:
public class Person {
private String personName;

    public Person(String personName) {
        this.personName = personName;
    } public String getPersonName() {
return personName;
} public void setPersonName(String personName) {
this.personName = personName;
}}
每次往Company中添加Person时:
        Company company = new Company("my company");        Person person1 = new Person("person1");
        Person person2 = new Person("person2");
        Person person3 = new Person("person3");
        company.getStaff().add(person1);
        company.getStaff().add(person2);
        company.getStaff().add(person3);
这样子设计好吗?是不是有更好的方法?意见越多越好

解决方案 »

  1.   

    案例结构很简单,你的做法没有问题。List<Person>就更好了。
      

  2.   

    如果用户想得到这个用户所在的公司,怎么办了?
    public Person(String personName) {
    this.personName = personName;
    }
    改成这样,你觉得如何:
    public Person(String personName,Compony com){
      this.personName = personName;
      com.getStaff().add(personName);
    }
    但是这样的话person直接依赖一个类,可以把Compony改成接口抽象类,Compony应该不只是服务于person。
    还有,如果用户想知道一个公司下所有员工的详细信息,怎么办,还得看需求再设计吧
      

  3.   

    这样已经不错了如果追求更完善的封装的话,可以考虑去掉getStaff()方法,添加实现如下方法public class Company{
      public void addPerson(Person person){
        //办工资卡
        //办考勤卡
        staff.add(person);
      }
      public void removePerson(Person person){
        //...
      }
      public boolean hasPerson(Person person){
        return staff.contain(person);
      }
       ...
    }
    当然不要忘了override类Person的equals方法
      

  4.   

    楼主写的是可以的如果要改善一点的话,我的方案和 dreamover(梦醒了)  完全相同