国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

C#中接口的深入淺出

2019-11-18 16:37:08
字體:
來源:轉載
供稿:網友

通過學習對C#中接口的作用有了更進一步的理解,拿出來跟大家分享一下,有說的不對的地方請大家指教。
我在上一篇帖子(http://www.PRogramfan.com/club/showbbs.asp?id=150228)中只是簡單的談了一下接口的作用,有興趣的朋友可以去看一下。
言歸正傳:
    假設我們公司有兩種程序員:VB程序員,指的是用VB寫程序的程序員,用clsVBProgramer這個類表示;Delphi程序員指的是用Delphi寫程序的程序員,用clsDelphiprogramer這個類來表示。 每個類都有一個WriteCode()方法。定義如下:

class clsVBProgramer()
{
  ....
  WriteCode()
  {
     //用VB語言寫代碼;
  }
  ....
}

class clsDelphiProgramer()
{
  ....
  WriteCode()
  {
    //用Delphi語言寫代碼;
  }
   ....
}

現在公司來了一個項目,要求派某個程序員寫一個程序。
class clsProject()
{
  ....
  WritePrograme(clsVBProgramer programer)//用VB寫代碼
  {
    programer.WriteCode();
  }
  WritePrograme(clsDelphiProgramer programer)//重載方法,用Delphi寫代碼
  {
    programer.WriteCode();
  }
 ......
}
在主程序中我們可以這樣寫:
main()
{
   clsProject proj=new  clsProject;
   //如果需要用VB寫代碼
   clsVBProgramer programer1=new clsVBProgramer;
   proj.WritePrograme(programer1);
   //如果需要用Delphi寫代碼
   clsDelphiProgramer programer2=new clsDelphiProgramer;
   proj.WritePrograme(programer2);
}

但是如果這時公司又來了一個C#程序員,我們怎么改這段程序,使它能夠實現用C#寫程序的功能呢?我們需要增加一個新類clsCSharpProgramer,同時在此clsProject這個類中要再次重載WritePrograme(clsCSharpProgramer programer)方法。這下麻煩多了。如果還有C程序員,C++程序員,java程序員呢。麻煩大了!

但是如果改用接口,就完全不一樣了:
首先聲明一個程序員接口:
interface IProgramer()
{
  WriteCode();
}
然后聲明兩個類,并實現IProgramer接口:
class clsVBProgramer():IProgramer
{
  ....
  WriteCode()
  {
     //用VB語言寫代碼;
  }
  ....
}

class clsDelphiProgramer():IProgramer
{
  ....
  WriteCode()
  {
    //用Delphi語言寫代碼;
  }
   ....
}
對clsProject這個類進行一下修改:
class clsProject()
{
  ....
  WritePrograme(IProgramer programer)
  {
    programer.WriteCode();//寫代碼
  }
  ......
}

main()
{
   clsProject proj=new  clsProject;
   IProgramer programer;
   //如果需要用VB寫代碼
   programer=new clsVBProgramer;
   proj.WritePrograme(programer);
   //如果需要用Delphi寫代碼
   programer=new clsDelphiProgramer;
   proj.WritePrograme(programer);   
}
如果再有C#,C,C++,JAVA這樣的程序員添加進來的話,我們只需把它們相關的類加進來,然后在main()中稍做修改就OK了。擴充性特別好!

另外我們如果把clsProject這個類封成一個組件,那么當我們的用戶需要要擴充功能的時候,我們只需要在外部做很小的修改就能實現,可以說根本就用不著改動我們已經封好組件!是不是很方便,很強大!


有說的不對的地方,請大家指教!


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 新闻| 竹北市| 剑川县| 博野县| 新沂市| 盐边县| 桂平市| 瓦房店市| 灵宝市| 万年县| 大厂| 根河市| 大理市| 两当县| 鞍山市| 广宁县| 武穴市| 虞城县| 云霄县| 新乐市| 城固县| 成武县| 东乌珠穆沁旗| 巴青县| 闽清县| 江山市| 那曲县| 阳谷县| 紫阳县| 绥化市| 宜宾县| 盐池县| 吴桥县| 盱眙县| 崇仁县| 枣庄市| 兴山县| 岐山县| 雷波县| 涟源市| 闵行区|