2016-03-04 72 views
0

这是我的课:获取对象的实例,它是否属于类?

public class Boots 
{ 
    public string Name { get; private set; } 
    public int Size { get; private set; } 

    public Boots(string Name, int Size) 
    { 
     this.Name = Name; 
     this.Size = Size; 
    } 
} 

我希望创建一个名字从数据库中获取引导的方法。 我应该把这种方法放在面向对象的思维中吗?该方法不属于引导实例,但在我看来,它属于该类。

是由具有返回一个实例

public static Boots GetBoots(string Name) 
{ 
    //Get boot from db and creates a Boots by calling its constructor 
    return new Boots(.....); 
} 
+0

搜索“活动记录”,这已经讨论过很多次了。 – CodeCaster

+3

你可以创建一个'BootsRepository'来获取和保存'Boots'的实例。 (我正在努力寻找一个比'Boots'更好的名字,因为这个类的多个集合将会在语义上怪异,也许称它为'BootPair'?) – David

+0

您需要某种类型的ffactory来创建in-内存对象来自您的数据库实体。这几乎不属于实际的特征级IMO。 – HimBromBeere

回答

1

基本问题是很好的引导类中的静态方法来做到这一点的正确方法,但有一个缺乏信息例如,如果你使用一些ORM,存储库或这只是odata请求,因为我很确定你已经有一堆代码:)我的方法是使用存储库模式的情况下,但对于这种简单的情况下,你也可以考虑活动记录模式。如果没有必要,请记住保持简单并且不要过度设计。

+0

感谢您的回应。我将研究存储库模式和活动记录模式。比方说,我没有使用ORM,只是从数据库命令中获取返回到GetBoots函数的数据集。如果你有时间,你能否给我一个你建议的两种模式的例子? –

+0

首先,如果您使用MS SQL,我建议使用存储过程而不是函数来处理那种事情。从设计角度来看,功能应该更多地用于计算活动 - 而不是用于收集数据。第二件事是在这种情况下,我会避免使用活动记录模式并使用存储库。我想你使用ADO.NET,所以看看这篇文章:http://blog.gauffin.org/2013/01/04/ado-net-the-right-way/ –

+0

谢谢你的帮助 –