何时最好使用新类而不是添加到现有类

时间:2009-02-27 01:38:49

标签: asp.net sql vb.net class class-design

我的Web应用程序的业务层中有一个名为Player的类。

Player类包含字段PlayerID,CategoryID和CountryID

Player Class中的函数调用数据访问层中的PlayerDB类中的函数,该函数又调用存储的proc,该proc返回PlayerID,CategoryID(Category表的外键)和CountryID(Country表的外键)的数据。播放器表。

我现在有一种情况,我想在上面的调用中添加国家名称和国家/地区图像(网址路径),从Country表中为每个CountryID返回新字段。

我的问题是,我是否将国家/地区名称和国家/地区图片作为附加字段添加到Player类中,或者我是否有名为Country(BLL)和CountryDB(DAL)的新类以及新的存储过程?

我想做的是最佳实践,而不是最简单的方法。

如果相关,我使用的是ASP.NET,VB.NET和SQL2005。

你可能会说我是新手,如果我没有在我的问题中使用正确的术语,请原谅我。我希望你明白这一点。

5 个答案:

答案 0 :(得分:1)

创建一个新类。如果它作为一个单独的逻辑实体是有意义的,那么它应该是它自己的类。

答案 1 :(得分:1)

听起来你应该创建一个新类。

它取决于“Player”类的用途。如果它是应用程序的几个部分中使用的泛型类型(听起来就像是这样),那么将应用程序的单个部分的自定义添加到Player类中可能是件坏事。

但是,如果(例如)Player类仅在应用程序的单个用户界面中使用,并且其目的是仅为应用程序的该部分表示Player,则添加这些字段可能是合理的做。

答案 2 :(得分:1)

您可以创建国家/地区类,并使用对象组合,使国家/地区类成为玩家类的属性。

Public Property Country() as BLL.Country
' etc

然后你会调用这样的方法:

Dim p as BLL.Player
a = p.Country.ID
b = p.Country.Name
c = p.Country.Image
d = p.ID
e = p.CategoryID

答案 3 :(得分:0)

我发现每当我不得不问这个问题时,答案总是会成为一个新课程。我不认为我曾经见过一个有太多课程的系统,或者有两个应该是一个系统的系统。

自从。

答案 4 :(得分:0)

您打算如何使用国家/地区数据?你会一直写player.getCountry().getName()吗?如果是这样,您可以编写一个函数player.getCountryName(),在内部调用country.getName()

查看Law of Demeter,其中说明您应该限制来电者对您的内部成员的了解程度。