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

不忘(wang)本~接口

返回目錄

接口無疑是面向對象的(de)(de)程序設計中(zhong)最(zui)重要的(de)(de)概(gai)念之一(yi),它(ta)體現(xian)一(yi)種(zhong)抽象,一(yi)種(zhong)規范(fan);即它(ta)只規定(ding)了具體的(de)(de)操(cao)作(zuo),而不對操(cao)作(zuo)進(jin)行實(shi)現(xian),它(ta)的(de)(de)實(shi)現(xian)由繼承它(ta)的(de)(de)類去完成(cheng);它(ta)是一(yi)種(zhong)規范(fan),即,它(ta)要求實(shi)現(xian)它(ta)的(de)(de)類要對它(ta)的(de)(de)成(cheng)員完全實(shi)現(xian)才行.

看一段代碼:

 1     /// <summary>
 2 
 3     /// 武器攻擊的通用接口
 4 
 5     /// </summary>
 6 
 7     public interface IAttack
 8 
 9     {
10 
11         /// <summary>
12 
13         /// 攻擊(ji)(ji)方(fang)法,被攻擊(ji)(ji)對象是一個敵(di)人對象
14 
15         /// </summary>
16 
17         /// <param name="Enemy"></param>
18 
19         VCommons.VMessage Attack(Entity.Enemy Enemy);
20 
21     }

 

對接口進行(xing)實現,看(kan)代碼:

 1     /// <summary>
 2 
 3     /// 木(mu)頭攻擊
 4 
 5     /// </summary>
 6 
 7     public class WoodAttack : Entity.IAttack
 8 
 9     {
10 
11  
12 
13         #region IAttack Members
14 
15  
16 
17         public VCommons.VMessage Attack(Entity.Enemy enemy)
18 
19         {
20 
21             return enemy.Notify(20);
22 
23         }
24 
25  
26 
27         #endregion
28 
29     }
30 
31     /// <summary>
32 
33     /// 鐵棒(bang)攻擊
34 
35     /// </summary>
36 
37     public class MagicAttack : Entity.IAttack
38 
39     {
40 
41  
42 
43         #region IAttack Members
44 
45  
46 
47         public VCommons.VMessage Attack(Entity.Enemy enemy)
48 
49         {
50 
51             return enemy.Notify(50);
52 
53         }
54 
55  
56 
57         #endregion
58 
59     }

 

除了(le)上面的(de)接(jie)(jie)口之外,還有(you)(you)一(yi)種特殊(shu)的(de)接(jie)(jie)口,它(ta)內部(bu)沒有(you)(you)任何元素,我們稱為(wei)標記接(jie)(jie)口。它(ta)不是(shi)(shi)為(wei)了(le)調(diao)用者的(de)期待(dai)而定義,其意圖是(shi)(shi)抽(chou)(chou)象,將那些不能抽(chou)(chou)象在(zai)一(yi)起的(de)類(lei),利(li)用一(yi)個標記綁定起來,為(wei)其提供統(tong)一(yi)的(de)接(jie)(jie)口。標記接(jie)(jie)口保證了(le)調(diao)用方法的(de)一(yi)致性。雖然(ran)強制類(lei)型轉(zhuan)換會(hui)引入具體依賴,卻不會(hui)有(you)(you)任何副作(zuo)用,因為(wei)在(zai)方法實(shi)現(xian)中,設計者的(de)期待(dai)本身就是(shi)(shi)要轉(zhuan)換的(de)類(lei)型.

看(kan)代碼:(對象實(shi)現統(tong)一(yi)接口和對象具體(ti)實(shi)體(ti)類)

  1     /// <summary>
  2 
  3     /// 數(shu)據(ju)庫對象統一協調接口
  4 
  5     /// </summary>
  6 
  7     public interface IDataEntity
  8 
  9     {
 10 
 11  
 12 
 13     }
 14 
 15  /// <summary>
 16 
 17     /// 活躍值明細       
 18 
 19     /// </summary>
 20 
 21     public partial class ActiveRecord : IDataEntity
 22 
 23     {
 24 
 25         //初始字段
 26 
 27         #region original field
 28 
 29         
 30 
 31         /// <summary>
 32 
 33         /// 活躍值明細ID
 34 
 35         /// </summary>
 36 
 37         public String ActiveRecordID { get;  set; }
 38 
 39         
 40 
 41         /// <summary>
 42 
 43         /// 所有(you)人ID
 44 
 45         /// </summary>
 46 
 47         public String UserID { get;  set; }
 48 
 49         
 50 
 51         /// <summary>
 52 
 53         /// 值(zhi)
 54 
 55         /// </summary>
 56 
 57         public Int32 Value { get;  set; }
 58 
 59         
 60 
 61         /// <summary>
 62 
 63         /// 收支(zhi)類(lei)型(xing)  [資金流(liu)向],0-收入,1-支(zhi)出
 64 
 65         /// </summary>
 66 
 67         public Entity.FlowType FlowType { get;  set; }
 68 
 69         
 70 
 71         /// <summary>
 72 
 73         /// 備注(zhu)
 74 
 75         /// </summary>
 76 
 77         public String Note { get;  set; }
 78 
 79         
 80 
 81         /// <summary>
 82 
 83         /// 時間
 84 
 85         /// </summary>
 86 
 87         public System.DateTime Createdate { get;  set; }
 88 
 89         
 90 
 91         /// <summary>
 92 
 93         /// 活躍(yue)值明細類(lei)類(lei)型 [默認為1, 為了以后(hou)做擴展使用] 
 94 
 95         /// </summary>
 96 
 97         public Int16 Type { get;  set; }
 98 
 99         
100 
101         #endregion
102 
103  
104 
105         //外延字段
106 
107         #region extensional field
108 
109  
110 
111         #endregion
112 
113  
114 
115         //構(gou)造函數
116 
117         #region constructed function
118 
119         
120 
121         /// <summary>
122 
123         /// 新建立的時候(hou)構造(zao)函數(shu)
124 
125         /// </summary>
126 
127         public ActiveRecord()
128 
129         {
130 
131         
132 
133         }
134 
135         
136 
137         /// <summary>
138 
139         /// 新(xin)建立的時(shi)候(hou)構(gou)造函數
140 
141         /// </summary>
142 
143         /// <param name="_ActiveRecordID">活躍值(zhi)明細ID</param>
144 
145         public ActiveRecord(String _ActiveRecordID )
146 
147         {
148 
149             this.ActiveRecordID = _ActiveRecordID ;
150 
151             
152 
153         }
154 
155  
156 
157         #endregion
158 
159  
160 
161         //方法
162 
163         #region function
164 
165  
166 
167         #endregion
168 
169  
170 
171         //重寫方法
172 
173         #region object overrides
174 
175  
176 
177         #endregion
178 
179     }

 

 

 

而在操作統一接(jie)口調用(yong)實體(ti)時,我們可以(yi)直接(jie)寫(xie)(xie)成接(jie)口類,而不用(yong)寫(xie)(xie)用(yong)具體(ti)類型

 1     /// <summary>
 2 
 3     /// 通(tong)用數據庫(ku)訪問接(jie)口
 4 
 5     /// </summary>
 6 
 7     public interface IRepository
 8 
 9     {
10 
11         /// <summary>
12 
13         /// 根據(ju)(ju)數據(ju)(ju)庫實體—》更新記錄
14 
15         /// </summary>
16 
17         /// <param name="entity"></param>
18 
19         void Update(IDataEntity entity);
20 
21    }

 

注意(yi),在實現時(shi),我們需(xu)要將(jiang)接口對象進行(xing)強(qiang)類(lei)型(xing)轉換,這(zhe)在標記(ji)接口中是可以(yi)的(de).

 1        public void Update(Entity.IDataEntity entity)
 2 
 3         {
 4 
 5 Entity.UserPointRecord _entity = entity as Entity.UserPointRecord;
 6 
 7 //as 返回 null 而不會引(yin)發異常
 8 
 9             if (_entity != null)
10 
11             {
12 
13                 /// 代碼(ma)邏輯
14 
15             }
16 
17             else
18 
19             {
20 
21                 throw new Exception("請傳入UserPointRecord類型的模(mo)型化對(dui)象");
22 
23             }
24 
25         }

 

好了(le),講(jiang)到這里,您是(shi)否對接口有了(le)一(yi)種全(quan)新的認識呢!哈(ha)哈(ha)!

返回目錄

posted @ 2011-07-05 10:02  張占嶺  閱讀(717)  評論(3)    收藏  舉報