C# インターフェイスの役割についての深い理解

黄舟
リリース: 2017-02-17 11:06:35
オリジナル
1546 人が閲覧しました

元のアドレス: http://www.php.cn/

私たちの会社には 2 種類のプログラマがいると仮定します。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();
}
......
}
ログイン後にコピー


メインプログラムでは次のように書くことができます:そうですかしかし、もし会社が別の C# プログラムを持ってきたらこの時点で メンバー、C# でプログラムを作成する機能を実現するには、このプログラムをどのように変更すればよいでしょうか。新しいクラス clsCSharpProgramer を追加すると同時に、この clsProject クラスで WritePrograme (clsCSharpProgramer プログラマー) メソッドを再度オーバーロードする必要があります。今度はさらにトラブルです。 C プログラマー、C++ プログラマー、JAVA プログラマーがいる場合はどうなるでしょうか。大きな問題!

しかし、代わりにインターフェイスを使用すると、まったく異なります:

最初にプログラマ インターフェイスを宣言します:

main()
{
   clsProject proj=new clsProject;
   //如果需要用VB写代码
   clsVBProgramer programer1=new clsVBProgramer;
   proj.WritePrograme(programer1);
   //如果需要用Delphi写代码
   clsDelphiProgramer programer2=new clsDelphiProgramer;
   proj.WritePrograme(programer2);
}
ログイン後にコピー
interface IProgramer()
{
WriteCode();
}
然后声明两个类,并实现IProgramer接口:
class clsVBProgramer():IProgramer
{
....
WriteCode()
{
     //用VB语言写代码;
}
....
}
ログイン後にコピー
clsProject クラスを変更します:
class clsDelphiProgramer():IProgramer
{
....
WriteCode()
{
    //用Delphi语言写代码;
}
   ....
}
ログイン後にコピー
C#、C、C++、プログラマがいる場合JAVA などを追加した場合は、関連するクラスを追加し、main() にわずかな変更を加えるだけで問題ありません。特に拡張性が優れています!

さらに、clsProject クラスをコンポーネントに封印すると、ユーザーが機能を拡張する必要がある場合、それを実現するために外部に小さな変更を加えるだけで済みます。素晴らしいコンポーネントが封印されています!とても便利で強力ではないでしょうか!


上記は、C# インターフェイスの役割についての詳細な理解です。さらに関連するコンテンツについては、PHP 中国語 Web サイト (www.php.cn) に注目してください。


ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!