2015年3月2日

[C#] Interface 使用

在物件導向中Interface可用來做為一個介面,在介面上定義不同的方法,而他方便之處就是不同的方法可以有不同的實作,也就是它裡面可以因不同的需求和情況重新定義,寫了一個小範例練習



在不同的公司中都會有需要新的成員與新的工作,因此將這兩件是寫在介面中,讓不同的Class繼承介面,因而可以使用這兩個功能,但因為不同公司會有不同方式創造新的成員與工作,因此實作方面又可以依造不同公司來實作

範例中INewThings為介面裡面包含CreateNewMember與CreateNewWork兩項方法
透過Main宣告介面後依照需求,不同的class繼承後可有不同的實作。

class Program
{
  static void Main(string[] args)
  {

     INewThings a = new Company1();
     var result = a.CreateNewMember(2);
     Console.WriteLine(result);
     Console.ReadLine();
  }
}

public interface INewThings
{
    string CreateNewMember(int ty);
    string CreateNewWork();
};

public class Company1 : INewThings
{
    string INewThings.CreateNewMember(int ty)
    {
       if(ty==1)
       {
           return "Account";
       }
       else if (ty == 2)
       {
           return "Engineer";
       }
       else
       {
           return "Boss";
       }
    }

    string INewThings.CreateNewWork()
    {
        return "Developing C#";
    }
}

public class Company2 : INewThings
{
    string INewThings.CreateNewMember(int ty)
    {
        return "painter";
    }

    string INewThings.CreateNewWork()
    {
        return "doing Art thing";
    }
}
另外在練習另一種寫法,Class裡的方法參數為Interface,透過傳入DTO資料做判斷並回傳字串
 
public interface INewThings
{
     string CreateNewMember(PersonInfo person);
};

public class PersonInfo
{
     public string Name { get; set; }
     public int age { get; set; }
}

    public class Company : INewThings
{
//Interface實作
string INewThings.CreateNewMember(PersonInfo PI)
{
     if(PI.age <18)
     {
          return "too young to work";
     }
     else if(PI.age >80)
     {
          return "too old to work";
    }
     else
     {
          return PI.Name + "-" + PI.age;
     }
}

public string humanresource(INewThings NewThings, PersonInfo Newguy)
{
     return NewThings.CreateNewMember(Newguy);
}

沒有留言:

張貼留言

<Javascript> How to uncompressed GZIP at front-end using Javascript

It's been a while I haven't share my coding work. In this article I would like to share how to receive a Gzip file via stream, unzip...