《Java設計模式》中出現的問題彙總

1. 寫出在Java中抽象類和接口的區別。

  • 一個類可以實現多個接口,但只能繼承最多一個抽象類。
  • 抽象類可以包含具體方法;接口的所有方法都是抽象的。
  • 抽象類可以聲明和使用字段;接口不能,但可以創建靜態的final常量。
  • 抽象類中的方法可以是public、protected、private或者默認的package;接口的方法都是public。
  • 抽象類可以定義構造函數;接口不能。

2. 示例類和外觀類的區別。

  • 示例通常是一個單獨運行的應用程序,而外觀不是。
  • 示例通常包含了樣本數據,而外觀沒有。
  • 外觀通常是可配置的,示例不是。
  • 外觀的意圖是爲了重用,示例不是。
  • 外觀用在產品代碼中,示例不是。

3. JOptionPane類讓對話框的顯示變得簡單,那麼,該類是一個外觀類、工具類還是示例類?

    JOptionPane類是Java類庫中少有的幾個運用了外觀模式的類。它屬於產品代碼,可配置,設計的目的是爲了重用。除此之外,JOptionPane類通過提供一個簡單的接口使得對JDialog類的使用變得簡單,滿足外觀模式的意圖。你可能會認爲該類是一個簡化了的“子系統”,但事實上,一個獨立的JDialog類並不能認爲是子系統。但確切地講,該類提供的豐富特徵體現了外觀類的價值。

    Sun公司在JDK中提供了多個示例程序。然而,這些類都不是Jav類庫的一部分,也就是說,它們並沒有被放在jar包中。外觀屬於Java類庫,但示例不是。

    JOptionPane有多個靜態方法,這使得它成爲運用了外觀模式的工具類,嚴格地講,這樣的類並不符合UML中工具類的定義,因爲UML要求工具類只能處理靜態方法。

4. Java類庫中爲什麼很少有外觀類?

  • 作爲Java開發者,通常要求對庫中的工具做整體的瞭解。外觀模式可能會限制這種運用系統的方式。它們可能會分散開發人員的注意力,並對類庫提供的功能產生誤解。
  • 外觀類介於豐富的工具包與特定應用程序之間。爲了創建外觀類,需要了解它所支持的應用程序類型。然而Java類庫的用戶如此之多,這種預先的支持是不可能的。
  • Java類庫提供的外觀類國少,這是一個缺陷。應該加入更多的外觀類,提供更好的支持。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章