實體類限制
實體類只應和其他實體類之間存在關聯關係。實體類對象的生存期一般都很長;而控制類對象和邊界類對象的生存期則很短。正是由於這些類的生存期相差如此之大,所以在這些類之間建立關聯關係是不可取的。
推薦使用的不同類構造型之間的關聯關係。
*用“訂閱”關聯關係取而代之,在這種關聯關係中控制類訂閱實體類對象中的某些特定事件。
推行一致性
· 發現一種新的行為後,檢查現有的類中是否具有類似的職責。只要可能,就復用現有的類。只有在缺乏可執行該新行為的現有對象時,才創建新類。
· 確定類之後,對類進行檢查,以確保它們的職責是一致的。如果某個類的職責互不相關,則將該對象分為兩個或者多個類。還應對協作圖進行相應的更新。
· 如果某個類由於職責互不相關而被劃分,則檢查這個類所參與的協作,判斷協作是否也需要更新。如果必要,可更新此協作。
· 只有一項職責的類不存在什麼問題,但它存在的必要性本身就值得懷疑。時刻準備對所有類的存在提出質疑並進行驗證。
代碼
7、
AdminInfo.cs:
AdminInfo
1using System;
2
3namespace NGuestBook.Entity
4{
5 /**////
6 /// 實體類-管理員
7 ///
8 [Serializable]
9 public class AdminInfo
10 {
11 private int id;
12 private string name;
13 private string password;
14
15 public int ID
16 {
17 get { return this.id; }
18 set { this.id = value; }
19 }
20
21 public string Name
22 {
23 get { return this.name; }
24 set { this.name = value; }
25 }
26
27 public string Password
28 {
29 get { return this.password; }
30 set { this.password = value; }
31 }
32 }
33}
34
MessageInfo.cs:
MessageInfo
1using System;
2
3namespace NGuestBook.Entity
4{
5 /**////
6 /// 實體類-留言
7 ///
8 [Serializable]
9 public class MessageInfo
10
11 private int id;
12 private string guestName;
13 private string guestEmail;
14 private string content;
15 private DateTime time;
16 private string reply;
17 private string isPass;
18
19 public int ID
20 {
21 get { return this.id; }
22 set { this.id = value; }
23 }
24
25 public string GuestName
26 {
27 get { return this.guestName; }
28 set { this.guestName = value; }
29 }
30
31 public string GuestEmail
32 {
33 get { return this.guestEmail; }
34 set { this.guestEmail = value; }
35 }
36
37 public string Content
38 {
39 get { return this.content; }
40 set { this.content = value; }
41 }
42
43 public DateTime Time
44 {
45 get { return this.time; }
46 set { this.time = value; }
47 }
48
49 public string Reply
50 {
51 get { return this.reply; }
52 set { this.reply = value; }
53 }
54
55 public string IsPass
56 {
57 get { return this.isPass; }
58 set { this.isPass = value; }
59 }
60 }
61}
62
CommentInfo.cs:
CommentInfo
1using System;
2
3namespace NGuestBook.Entity
4{
5 /**////
6 /// 實體類-評論
7 ///
8 [Serializable]
9 public class CommentInfo
10 {
11 private int id;
12 private string content;
13 private DateTime time;
14 private int message;
15
16 public int ID
17 {
18 get { return this.id; }
19 set { this.id = value; }
20 }
21
22 public string Content
23 {
24 get { return this.content; }
25 set { this.content = value; }
26 }
27
28 public DateTime Time
29 {
30 get { return this.time; }
31 set { this.time = value; }
32 }
33
34 public int Message
35 {
36 get { return this.message; }
37 set { this.message = value; }
38 }
39 }
40}
41
大家可以看出,實體類的代碼很簡單,僅僅是負責實體的表示和數據的傳遞,不包含任何邏輯性內容。