中文字幕精品亚洲无线码二区,国产黄a三级三级三级看三级,亚洲七七久久桃花影院,丰满少妇被猛烈进入,国产小视频在线观看网站

代碼重構~封裝(zhuang)成員(yuan)變量

返回目錄

封裝成員變量(Encapsulate Field) — 將僅限于本類使用的(de)(de)變量(liang)重寫成私有(private)成員變量(liang),并提供訪問(wen)方(fang)法(fa)(accessor method)。這種重構(gou)方(fang)式可以將與外(wai)(wai)部調(diao)用者(zhe)無關的(de)(de)變量(liang)隱(yin)藏起來,減少代碼的(de)(de)耦(ou)合性,并減少意外(wai)(wai)出錯的(de)(de)概率。

看圖所示:

 1     /// <summary>
 2     /// 驗證實(shi)體類
 3     /// </summary>
 4     public class RuleViolation
 5     {
 6         /// <summary>
 7         /// 驗(yan)證指(zhi)向的錯誤信息
 8         /// </summary>
 9         public string ErrorMessage { get; private set; }
10         /// <summary>
11         /// 驗(yan)證指(zhi)向的屬性名
12         /// </summary>
13         public string PropertyName { get; private set; }
14 
15         public RuleViolation(string errorMessage)
16         {
17             ErrorMessage = errorMessage;
18         }
19 
20         public RuleViolation(string errorMessage, string propertyName)
21         {
22             ErrorMessage = errorMessage;
23             PropertyName = propertyName;
24         }
25     }

以上的代碼是一種特殊的封裝成員變量的方(fang)式,它使用(yong)了.net3.5的get;set;特性,不(bu)需要重新定義額外的變量,顯得程序代碼更簡潔,層次更清(qing)晰。

下面代碼是一種典型的封裝成員變量的方式

不規范的代碼:

    public abstract class Singleton<TEntity> where TEntity : class
     {
       public TEntity Instance=...;
 }

使用封裝成員變量進行代碼重構之后:

    public abstract class Singleton<TEntity> where TEntity : class
     {
        private Lazy<TEntity> _instance=...;

         public TEntity Instance
         {
             get { return _instance.Value; }
         }

}

其中代碼中的_instance對外是“隱藏”的,而外界可以通過Instance這個只讀的屬性去訪問這個_instance的值。

返回目錄

posted @ 2012-07-26 08:37  張占嶺  閱讀(1317)  評論(0)    收藏  舉報