2009-08-12

Class 設計

這個網誌,也空了一段時間
因為之前為了準備考試,再加上工作的忙碌
回到家就幾乎不想再碰電腦(懶的打字 ^^")

只是,這樣並不是很好的習慣
有些事情真的要當下記錄下來。。。
看著之前所寫的紀錄,雖然有很多地方有誤
但這些紀錄讓我明瞭,曾經做了哪些事情
至少再走過同一段路時,可以提醒自己曾經做了哪些抉擇。
廢話少說。。紀錄一點心得

-----分隔線------
最近在撰寫程式的時候,開始漸漸使用Interface來設計物件

假設,我今天要設計Message Class(有許多類型)
遇到的一個小問題是:
今天若有多個不同種類的Message Class,
當然Member也一定會有所不同,我如何確保這些Message
維持在同一個規範下?

我想到的解決方法如下:
1.建立一個抽象類別當作是Message的基底類別。
你可以選擇實作成員,或是建立抽象成員
當繼承這個抽象類別時,也須遵守實作抽象成員。
例如:
建立抽象類別(MsgBase),
Message1繼承這個抽象類別並實作抽象成員


   1:      public abstract class MsgBase
   2:      {
   3:          public abstract string Name
   4:          {
   5:              get;
   6:              set;
   7:          }
   8:   
   9:          public string GetMessage()
  10:          {
  11:              return "My Message!";        
  12:          }
  13:      }
   1:      public class Message1:MsgBase
   2:      {
   3:          private string NameField;
   4:          public override string Name
   5:          {
   6:              get
   7:              {
   8:                  return NameField;
   9:              }
  10:              set
  11:              {
  12:                  NameField=value;
  13:              }
  14:          }
  15:      }

Message1這個Class則有(Name、GetMessage)這兩個成員,
藉由繼承的概念來規範。

2.利用Interface來規範。
當繼承Interface時,必須要實作Interface的成員
這樣也同樣可以規範出這個Class的框架。
而Interface的好處,則可以藉由操作Interface
來達到目的。

例如:
今天我得到一個Object,我不確定他是哪種Class
但我知道這個Object繼承了我所得知的Interface
可以藉由操作Interface的方式,同樣也可以達到效果。

   1:  ISerialize mySerialize=o as ISerialize
   2:  mySerialize.Serialize();

我亂寫到這,其實學習設計物件
經驗還不足,不過慢慢懂得一點點

沒有留言:

張貼留言