《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类库提供的外观类国少,这是一个缺陷。应该加入更多的外观类,提供更好的支持。

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