Cod*_*ody 4 java android object data-structures
假设我有多个要存储的对象:
Person ------------ Employee ------------ Sales Engineer
| |
Customer Field Engineer
Run Code Online (Sandbox Code Playgroud)
所以:人,客户,员工,销售工程师,现场工程师.
我需要跟踪所有这些......存储它们的最佳方法是什么?在ArrayList中?自定义ArrayList?
它们的存储方式也可能会影响未来的扩展 - 将来,这些对象可能会由SQL Server中的字段生成.(此外,这是一个Android应用程序 - 所以这可能是一个因素.)
你会想要一个List<Person>.你的图表建议继承,所以你需要有一个超类的集合,让多态来完成剩下的工作.
您的代码可以执行此操作:
List<Person> people = new ArrayList<Person>();
// Any class that extends person can be added
people.add(new Customer());
people.add(new FieldEngineer());
for (Person person : people) {
System.out.println(person);
}
Run Code Online (Sandbox Code Playgroud)
您所表达的设计不允许工程师成为客户,或销售工程师进入现场,但这是像您这样的情况下的继承诅咒.
如果您需要灵活性,更好的设计可能是保留Person类并以装饰器方式为Person分配角色.
装饰器会使用组合而不是继承来添加行为,如下所示:
public class Customer {
private Person person;
public Customer(Person p) { this.person = p; }
public void buyIt() { // do something customer like here }
}
public class FieldEngineer {
private Person person;
public FieldEngineer(Person p) { this.person = p; }
public void fixIt() { // do something field engineer like here }
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
404 次 |
| 最近记录: |