这是我的场景:
我有一个具有 10 个属性的对象(例如姓名、生日等)。我在我的 jsf Web 应用程序的两个单独页面上使用该对象。在一个页面上,我只会使用 5 个属性,而在另一个页面上,我可能会使用所有 10 个属性。构造对象的最佳实践/最有效的方法是什么?我只有一个对象吗?第一页是否有一个对象,第二个页面是否有另一个扩展第一个对象?还是每个页面都有一个对象,都扩展了一个基础对象?
我不会太在意这些属性,我会更多地考虑课程。
类代表一个原子的东西,对吧?听起来像是一个人。
事实上,在某些情况下,您只使用了一些属性,那又如何呢?
开设 HalfAPerson 课程是没有意义的!
所以对我来说,关键首先是你班级的“原子性”。如果如果描述一个单一的、合乎逻辑的事物,那为什么还要进一步拆分呢?
作为所有面向对象代码中的一般规则:
如果 A 类在各方面都像 B 类,但有一些额外的位;A类应该扩展B类
如果 A 类和 B 类相似,但彼此都没有完全封装,那么它们都应该扩展一些基类。
我认为你处于第一种情况
我解决这个问题的方法是这样的:
package com.model
public class MyClass
{
//all 10 properties with getters and setters
}
ui 支持类的单独包
package com.ui.backing
public class FiveProperties
{
private MyClass myClass;
//use the 5 properties here
}
public class TenProperties
{
private MyClass myClass;
//use the 10 properties here
}
这样做的好处是应用程序中的每个页面都由您需要的一组特定属性支持。它还使页面具有特定的逻辑,而不是到处复制代码。
理想情况下,如果页面不同,您应该完全使用两个不同的类,因为将来您可能不再有任何共同的属性。
话虽如此,如果您跨页面使用它(也许也将其存储在会话中)和公共数据,那么我建议您使用单个对象并在页面上使用适当数量的属性。这是假设这些共同值在两个页面上都是相同的。