[英]c# object/design fundamentals
這是一種標准的,良好的做法嗎? 基本上返回本身的列表? 實際字段(ID,標題等)是否應該是單獨的類? (我見過人們稱其為DTO對象)
我正在開始一個項目,我想嘗試並逐步降低這些基本知識-
謝謝!!
public class Calendar
{
public int id { get; set; }
public string title { get; set; }
public List<calendar> GetAll()
{
var list = new List<calendar>();
var db = new mssql2();
db.set("s1");
string sql = @"select * from [cal]";
var dr = db.dr(sql);
while (dr.Read())
{
var e = new calendar();
e.id = (int)dr["id"];
e.title = dr["title"].ToString();
list.Add(e);
}
return list;
}
}
您似乎正在將Domain模型與Data Access層混合在一起。
將Calendar保留為其自己的類,並可能使另一個類稱為CalendarService
或CalendarRepository
,該類將為您返回Calendar對象的列表。
這是一個例子:
public class Calendar
{
public Calendar() { }
public Calendar(int id, string title)
{
Id = id;
Title = title;
}
public int Id { get; set; }
public string Title { get; set; }
}
public class CalendarService
{
public static List<Calendar> GetAll()
{
var list = new List<Calendar>();
var db = new mssql2();
db.set("s1");
string sql = @"select * from [cal]";
var dr = db.dr(sql);
while (dr.Read())
{
// Use the constructor to create a new Calendar item
list.Add(new Calendar((int)dr["id"], dr["title"].ToString()));
}
return list;
}
}
一般的想法是,類代表域對象 ,並且類成員具有這些域對象的各種屬性 。 類函數將表示對象可以做什么 。
在您的情況下,將get_all()
刪除到一些抽象數據庫操作的類上可能更合適。 Calendar
具有Calendar
的功能(獲取/設置一些日期,獲取跳過的年份,獲取/設置一些約會); 取決於您要完成的日歷。
您正在緊密耦合數據訪問,並且您的“ get_all”方法甚至沒有使用日歷類型的對象中的任何東西。 如果在這種情況下,您的方法不使用其所屬類的實例中的任何數據,則該方法應不存在,或應為靜態方法。 我的偏好是使用前者-擁有一個旨在從數據庫中檢索一個或多個日歷的類。 它是更明智的代碼組織,更易於測試,可以更輕松地從數據層抽象出來,並且還使您的數據對象更具可移植性。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.