• <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>
  • C#中接口的深入淺出

    發表于:2007-04-22來源:作者:點擊數: 標簽:接口假設公司有我們深入淺出
    假設我們公司有兩種 程序員 : VB 程序員,指的是用VB寫程序的程序員,用clsVBProgramer這個類表示;Delphi程序員指的是用Delphi寫程序的程序員,用clsDelphiProgramer這個類來表示。 每個類都有一個WriteCode()方法。定義如下: class clsVBProgramer() { .
    假設我們公司有兩種程序員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這個類封成一個組件,那么當我們的用戶需要要擴充功能的時候,我們只需要在外部做很小的修改就能實現,可以說根本就用不著改動我們已經封好組件!是不是很方便,很強大!

    原文轉自:http://www.kjueaiud.com

    老湿亚洲永久精品ww47香蕉图片_日韩欧美中文字幕北美法律_国产AV永久无码天堂影院_久久婷婷综合色丁香五月

  • <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>