国产片侵犯亲女视频播放_亚洲精品二区_在线免费国产视频_欧美精品一区二区三区在线_少妇久久久_在线观看av不卡

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|JavaScript|易語言|

服務器之家 - 編程語言 - Java - Java設計模式之監聽器模式實例詳解

Java設計模式之監聽器模式實例詳解

2021-04-05 13:42Jenkov Java

這篇文章主要介紹了Java設計模式之監聽器模式,結合實例形式較為詳細的分析了java設計模式中監聽器模式的概念、原理及相關實現與使用技巧,需要的朋友可以參考下

本文實例講述了Java設計模式之監聽器模式。分享給大家供大家參考,具體如下:

監聽器模式有三個要素——事件源、事件對象、監聽器。

事件源:顧名思義,事件發生的源頭,比如點擊的按鈕,屬于被監聽的對象;
事件對象:這個經常和事件源混淆,它經常被用來包裝事件源,切記,它畢竟是個事件,比如點擊事件,和事件源的區別自己感受,木有栗子;
監聽器:這個是監聽器模式的核心,定義事件發生后的動作,通常事件對象作為監聽器中定義的函數入參。

下面舉個簡單的栗子:

故事背景是,小明是個不講衛生的孩子,他媽媽很擔心他的健康,規定必須飯前洗手。

定義一個熊孩子。熊孩子就是被監聽的對象,是事件源,一切事件都是事件源發出,這似乎是句廢話。

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
public class Child {
  private String name;
  private RemindListener remindListener;
  public Child(String name){
    this.name = name;
  }
  public void eat() {
    if(null!=remindListener){
      remindListener.remind(new RemindWashingHandsEvent(this));
    }
    System.out.println("Child eat...");
  }
  public void addListener(RemindListener listener){
    remindListener = listener;
  }
}

接下來是看看事件對象,事件對象正如上面所述,包裝了事件源。我們在這里定義一個飯前洗手事件。

?
1
2
3
4
5
6
public class RemindWashingHandsEvent {
  private Child child;
  public RemindWashingHandsEvent(Child child){
    this.child = child;
  }
}

事件對象定義了事件的屬性、狀態。
緊接著是定義事件發生后,監聽器的動作,在這里是提醒洗手。

?
1
2
3
4
5
public class RemindListener {
  public void remind(RemindWashingHandsEvent remindWashingHandsEvent){
    System.out.println("listen to mom, washing hands before eating...");
  }
}

注意,監聽器主要封裝了動作,僅此而已。

以上代碼,只是為了說明監聽器模式原理,代碼通俗,不太優雅。

下面繼承或實現java標準庫,又隨手寫了一對代碼,夜深了,有時間再解釋。

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
public class Kid{
  private String name;
  private List<Listener> liteners;
  public Kid(String name) {
    this.name = name;
    this.liteners = Lists.newArrayList();
  }
  public void eat(){
    for(Listener listener:liteners){
      if(listener instanceof WashingHandsListener){
        WashingHandsListener washingHandsListener = (WashingHandsListener) listener;
        washingHandsListener.fireAfterEventInvoked(new WashingHandsEvent(this,"洗手"));
      }
    }
    System.out.println("吃飯...");
  }
  public void addListener(Listener listener){
    liteners.add(listener);
  }
}
public class Event extends EventObject {
  /**
   * Constructs a prototypical Event.
   *
   * @param source The object on which the Event initially occurred.
   * @throws IllegalArgumentException if source is null.
   */
  public Event(Object source) {
    super(source);
  }
}
public class WashingHandsEvent extends Event{
  private String eventName;
  /**
   * Constructs a prototypical Event.
   *
   * @param source The object on which the Event initially occurred.
   * @throws IllegalArgumentException if source is null.
   */
  public WashingHandsEvent(Object source,String eventName) {
    super(source);
    this.eventName = eventName;
  }
  public String getEventName() {
    return eventName;
  }
  public void setEventName(String eventName) {
    this.eventName = eventName;
  }
}
public interface Listener extends java.util.EventListener{
  public void fireAfterEventInvoked(Event event);
}
public class WashingHandsListener implements Listener{
  @Override
  public void fireAfterEventInvoked(Event event) {
    WashingHandsEvent washingHandsEvent = (WashingHandsEvent) event;
    System.out.println("飯前準備"+ washingHandsEvent.getEventName());
  }
}
public class Test {
  public static void main(String[] args) {
    Kid xiaoming = new Kid("xiaoming");
    xiaoming.addListener(new WashingHandsListener());
    xiaoming.eat();
  }
}

輸出結果:

Java設計模式之監聽器模式實例詳解

希望本文所述對大家java程序設計有所幫助。

原文鏈接:https://www.cnblogs.com/jenkov/p/listener_in_java.html

延伸 · 閱讀

精彩推薦
Weibo Article 1 Weibo Article 2 Weibo Article 3 Weibo Article 4 Weibo Article 5 Weibo Article 6 Weibo Article 7 Weibo Article 8 Weibo Article 9 Weibo Article 10 Weibo Article 11 Weibo Article 12 Weibo Article 13 Weibo Article 14 Weibo Article 15 Weibo Article 16 Weibo Article 17 Weibo Article 18 Weibo Article 19 Weibo Article 20 Weibo Article 21 Weibo Article 22 Weibo Article 23 Weibo Article 24 Weibo Article 25 Weibo Article 26 Weibo Article 27 Weibo Article 28 Weibo Article 29 Weibo Article 30 Weibo Article 31 Weibo Article 32 Weibo Article 33 Weibo Article 34 Weibo Article 35 Weibo Article 36 Weibo Article 37 Weibo Article 38 Weibo Article 39 Weibo Article 40
主站蜘蛛池模板: 精品久久久一区 | 成人在线免费视频 | 激情综合色综合久久综合 | 国产这里只有精品 | 国产aaaaav久久久一区二区 | 精品久久久久国产 | 欧美一级二级三级视频 | 免费观看av毛片 | av一区二区在线观看 | 久久99精品久久久 | 亚洲精品久久久久久动漫 | www.嫩草| 成人小视频在线观看 | 亚洲国产精品尤物yw在线观看 | 国产精品久久久久无码av | 久久国产一区 | 精品视频在线播放 | 8888色大全 | 中文视频一区 | 一区二区三区欧美在线 | 欧美视频一区二区 | 麻豆产精国品免费 | 亚洲成av人影片在线观看 | 国产aⅴ | 国产精品久久久久久久久久久久冷 | 亚洲一级毛片 | 日韩精品一区二区在线观看 | 免费激情网站 | 久久久亚洲综合 | 色av综合 | 日韩精品在线观看视频 | 自拍视频一区 | 亚洲精品综合 | 亚洲精品久久久久久一区二区 | 色播开心网| 视频一区二区三区中文字幕 | 久久国产精品电影 | 一级a性色生活片毛片 | 午夜国产在线 | 欧美亚洲三级 | 午夜在线|