我正在开发一个Android应用程序,我有一个用户类,其中包含有关用户的属性。我还有一个具有视图(即TextViews)的类,它在屏幕上显示相应的属性,这些属性用于GUI。这个GUI类需要用户类的属性,所以我也可以访问它们。所以我决定让我不确定。我想选择一个在编程实践中更好的那个。我不想将包括GUI在内的所有属性合并到一个类中。
我看到它的方式是,我可以让GUI类扩展用户类,或者让GUI类具有保存用户对象的私有全局变量。
有谁知道哪个更好,为什么?
答案 0 :(得分:3)
使用encapsulation会更好。对于扩展“用户”类的GUI类没有任何意义 - 这两者不具有任何"is-a"关系。然而,确实对于GUI类来说是有意义的,以维护用户对象的工作。
换句话说,说GUI对象是用户对象是没有意义的,但是说GUI对象包含用户a是有意义的用户对象。
最后,您通常希望将前端和后端尽可能保持独立和模块化。让你的GUI类扩展你的用户类会破坏这个原则。
答案 1 :(得分:0)
根据MVC architecture
(Android使用的),我认为您没有选择任何良好的编程习惯。
既没有GUI类(UI层的一部分)扩展User class
(模型层的一部分),也没有在GUI类中引用User
是一个好主意(恕我直言)。模型和用户界面之间的互动应委托给您Controller
(Activity
)
作为旁注,还有其他语言,例如Objective-C
您可以使用Category
。使用类别,您可以装饰UI类来执行此类操作,而不会违反体系结构。