目錄
1.事件封裝
2.事件封裝與類方法比較
3.後記
提到事件封裝,總能讓人想到JAVA的接口,事實上,它就是個接口
首先創建類,具體細節已經在《arduino面向對象編程》詳細介紹過了,下面直接介紹事件:
聲明事件OnLEDBlink;當外部對象調用on()方法時,觸發事件;
void on()
{
OnLEDBlink();
}
void (*OnLEDBlink)();
給OnLEDBlink賦實體內容:
void LED_13_Blink()
{
digitalWrite(13,HIGH);
delay(1000);
digitalWrite(13,LOW);
delay(1000);
}
void setup()
{
led.OnLEDBlink = LED_13_Blink;
}
調用對象的on()方法,觸發事件:
void loop()
{
led.on();
}
完整代碼:
class LED
{
public:
int pin;
bool state;
LED(int p)
{
pin=p;
pinMode(pin,OUTPUT);
}
void on()
{
OnLEDBlink();
}
void (*OnLEDBlink)();
};
LED led(13);
void LED_13_Blink()
{
digitalWrite(13,HIGH);
delay(1000);
digitalWrite(13,LOW);
delay(1000);
}
void setup()
{
led.OnLEDBlink = LED_13_Blink;
}
void loop()
{
led.on();
}
是不是一氣呵成,一、難度都沒有。肯定有人會問了,事件有什麼必要呢?實體要重新寫;觸發也要靠方法,完全沒意義啊?那你想,讓對象的方法和外部建立聯繫的是什麼?是不是恍然大悟了(怪不得叫接口呢)。
但事實上,除了上述不正經的一點外,事件還有很多好處:事件封裝起來更方便使用且不用更改方法內容,具體分析見下述。
作爲接口,當然是鏈接類和外部的橋樑;這就使得外部做處理時,如果需要用到類,並不需要每個功能都對類的方法做修改,而是隻對外部觸發執行內容做修改即可,此爲封裝。
那麼二者優缺點就出來了:
作爲方法來說,如果需要執行的東西比較死,(例如上一章的只做LED亮處理),那麼當然用方法更方便;但是遇到此例中LED閃爍來說,如果不讓它1s而是2s閃爍呢?用方法肯定是要修改類的方法了,這對封裝來說極其不友好;因此事件的優越性就體現出來了。
更多精彩歡迎關注【菜小濤的CSDN】。