>  기사  >  백엔드 개발  >  C# 인터페이스의 역할에 대한 심층적인 이해

C# 인터페이스의 역할에 대한 심층적인 이해

黄舟
黄舟원래의
2017-02-17 11:06:351495검색

원본 주소: http://www.php.cn/

우리 회사에 두 가지 유형의 프로그래머가 있다고 가정해 보겠습니다. VB 프로그래머입니다. VB에서 프로그램을 작성하는 프로그래머는 clsVBProgramer 클래스로 표시됩니다. Delphi 프로그래머는 clsDelphiProgramer 클래스로 표시되는 Delphi에서 프로그램을 작성하는 프로그래머를 나타냅니다. 모든 클래스에는 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 프로그래머) 메서드를 다시 오버로드해야 합니다. 이번에는 더 문제다. C 프로그래머, C++ 프로그래머, JAVA 프로그래머가 있다면 어떨까요? 큰 문제!

하지만 대신 인터페이스를 사용하면 완전히 달라집니다.
먼저 프로그래머 인터페이스 선언:

interface IProgramer()
{
WriteCode();
}
然后声明两个类,并实现IProgramer接口:
class clsVBProgramer():IProgramer
{
....
WriteCode()
{
     //用VB语言写代码;
}
....
}
rrree

clsProject 클래스 수정:

class clsDelphiProgramer():IProgramer
{
....
WriteCode()
{
    //用Delphi语言写代码;
}
   ....
}


C#, C, C++, JAVA 같은 프로그래머가 추가된다면 관련 클래스만 추가하고 main()에 약간만 수정하면 괜찮습니다. 확장성이 특히 좋습니다!

또한 clsProject 클래스를 구성 요소로 봉인하면 사용자가 기능을 확장해야 할 때 이를 달성하기 위해 작은 외부 수정만 하면 된다고 말할 수 있습니다. 변경 사항 구성 요소를 봉인했습니다! 정말 편리하고 강력하지 않나요!


이상은 C# 인터페이스의 역할에 대한 심층적인 이해입니다. 더 많은 관련 내용은 PHP 중국어 홈페이지(www.php.cn)를 참고해주세요. !


성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.