一、接口
- .NET中接口的定義規範
- 使用關鍵字interface定義,接口類名稱通使用“I”開頭
- 接口中的屬性、方法等,只是做一個聲明,而沒有任何實現
- 接口中的屬性、方法等,默認是public
interface IStudent { //屬性 string StudentName{get;set;} string StudentGender{get;set;} //接口方法 string GetStudentInfo(); void Study(); }
- 接口特點
- 接口具有強制性,實現接口的類必須實現接口所有的成員
- 一個類可以實現多個接口,也可以同時繼承其他類,先繼承類後實現接口
- 接口實踐應用
- 提高團隊成員並行開發項目的效率
- 接口使用者值關心接口的應用功能,而不關心接口的實現細節
- 接口的實現者只關心接口如何實現的內部細節,不關心誰使用
class HPMultiPrinter:IMultiPrinter { public void Print(string contents) { .... } public void Copy(string contents) { .... } public void Fax(string contents) { .... } } static void Main(string[] args) { IMultiPrinter objHPPrint = new HPMultiPrinter(); objHPPrint.Print("信息表"); ... }
- 接口應用總結
- 接口的應用場合
- 如果某一個功能點需求變化較多,應使用接口保證系統的可擴展性
- 如果想實現團隊成員的併發開發,可以使用接口來規範對象的使用
- 接口編寫規範
- 接口成員只能是一個聲明
- 實現接口的類必須全部實現接口中規定的屬性、方法
- 特別說明
- 接口的使用不是必須的,需要根據用戶的需求來決定
- 接口與抽象類的比較
- 接口的應用場合
- 提高團隊成員並行開發項目的效率
二、接口框架設計
接口設計,源於對需求的更好的理解
接口抽取,就是根據需求模塊,進行功能分裝
三、委託應用-主從窗體通信
從窗體向主窗體傳遞數據
1.主窗體中聲明委託:
public delegate void ShowCounter(string counter);
2.根據委託創建方法
//接收委託傳遞的信息
private void Receiver(string counter)
{
this.lblCount.Text = counter;/.界面顯示
}
3.從窗體穿件委託變量
public ShowCounter msgSender;
//主窗體
namespace DeletegateFromComm
{
/// <summary>
/// 主窗體
/// </summary>
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
Form2 obj = new Form2();
//將從窗體的委託變量和主窗體的對應方法關聯
obj.msgSender = this.Receiver;
obj.Show();
}
private void Receiver(string counter)
{
this.lblCount.Text = counter;
}
}
/// <summary>
/// 聲明委託
/// </summary>
/// <param name="counter"></param>
public delegate void ShowCounter(string counter);
}
//從窗體
public partial class Form2 : Form
{
public Form2()
{
InitializeComponent();
}
//根據委託創建委託對象
public ShowCounter msgSender;
private int counter = 0;
private void button1_Click(object sender, EventArgs e)
{
counter++;
if (msgSender != null)
{
msgSender(counter.ToString());
}
}
}
主窗體向從窗體發送信息
主窗體
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
Frm01 obj1 = new Frm01();
Frm02 obj2 = new Frm02();
Frm03 obj3 = new Frm03();
this.msgSender += obj1.Receicee;
this.msgSender += obj2.Receicee;
this.msgSender += obj3.Receicee;
obj1.Show();
obj2.Show();
obj3.Show();
}
public ShowCounter msgSender;
private int counter = 0;
private void button1_Click(object sender, EventArgs e)
{
counter++;
//同時發送消息
this.msgSender.Invoke(counter.ToString());
}
private void button2_Click(object sender, EventArgs e)
{
counter = 0;
this.msgSender.Invoke("0");
}
}
public delegate void ShowCounter(string counter);
從窗體
public partial class Frm01 : Form
{
public Frm01()
{
InitializeComponent();
}
/// <summary>
/// 接收委託傳遞的信息
/// </summary>
/// <param name="counter"></param>
public void Receicee(string counter)
{
this.lblCount.Text = counter;
}
}