Home  >  Article  >  Backend Development  >  In-depth understanding of the role of C# interfaces

In-depth understanding of the role of C# interfaces

黄舟
黄舟Original
2017-02-17 11:06:351493browse

Original address: http://www.php.cn/

Suppose there are two types of programmers in our company: VB programmers, referring to Programmers who write programs in VB are represented by the class clsVBProgramer; Delphi programmers refer to programmers who write programs in Delphi, represented by the class clsDelphiProgramer. Every class has a WriteCode() method. The definition is as follows:

##

class clsVBProgramer()
{
....
WriteCode()
{
     //用VB语言写代码;
}
....
}

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


Now the company has a project, Ask a programmer to write a program.

##

class clsProject()
{
....
WritePrograme(clsVBProgramer programer)//用VB写代码
{
    programer.WriteCode();
}
WritePrograme(clsDelphiProgramer programer)//重载方法,用Delphi写代码
{
    programer.WriteCode();
}
......
}

In the main program we can do this Write:

##

main()
{
   clsProject proj=new clsProject;
   //如果需要用VB写代码
   clsVBProgramer programer1=new clsVBProgramer;
   proj.WritePrograme(programer1);
   //如果需要用Delphi写代码
   clsDelphiProgramer programer2=new clsDelphiProgramer;
   proj.WritePrograme(programer2);
}
But if the company Here comes another C# programmer. How can we change this program so that it can realize the function of writing programs in C#? We need to add a new class clsCSharpProgramer, and at the same time overload the WritePrograme (clsCSharpProgramer programer) method again in this clsProject class. This time it's more trouble. What if there are C programmers, C++ programmers, and JAVA programmers. Big trouble!

But if you use an interface instead, it will be completely different:

First declare a programmer interface:

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


Modify the clsProject class:

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);   
}

If programmers like C#, C, C++, and JAVA are added, we only need to add their related classes, and then in main() It's OK with a little modification. The scalability is particularly good!

In addition, if we seal the clsProject class into a component, then when our users need to expand functions, we only need to make small external modifications to achieve it. It can be said that there is no need at all. Changes We have sealed the component! Isn’t it very convenient and powerful!

The above is the in-depth understanding of the role of C# interface. For more related content, please pay attention to the PHP Chinese website (www.php.cn)!


Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn