读书频道 > 网站 > 网页设计 > Java设计模式(第2版)
外观类、工具类和示例类
12-08-27    叶孤城
收藏    我要投稿   

本文所属图书 > Java设计模式(第2版)

本书通过一个完整的Java项目对经典著作Design Patterns一书介绍的23种设计模式进行了深入分析与讲解,实践性强,却又不失对模式本质的探讨。本书创造性地将这些模式分为5大类别,以充分展现各个模式的重要特征,...立即去当当网订购
面向对象编程的最大优势,在于它能够防止应用程序成为混乱纠缠的小块程序。理想状态下,面向对象系统应该是将其他可复用的工具类中的行为组织在一起的最小的类。工具包或子系统的开发人员通常会将设计良好的类组织为包,而不是提供应用程序。Java类库中的包通常可以当做工具包(toolkits),以保证我们能够随意地开发各种特定领域的应用程序。

伴随工具包复用性而来的问题是:面向对象子系统中类的多样性可能导致选择太多,以至于希望使用该工具包的开发人员变得茫然失措。诸如Eclipse这样的集成开发环境(IDE),可以将开发人员从包的错综复杂中解脱出来,然而,IDE有时却会产生大量开发人员不需要的代码。

简化工具包的另一途径是使用外观(facade)模式。只需少量代码,就能提供典型的、无修饰用法的类库中的类。一个外观就是一个类,它包含的功能介于工具包与完整的应用程序之间,为工具包或子系统的类提供了简单的用法。

外观模式的意图是为子系统提供一个接口,便于它的使用。

外观类、工具类和示例类

外观类可能全是静态方法,在UML中,这样的类被称为utility。稍后,我们将介绍一个全为静态方法的UI(用户界面)类,尽管这样做可能会影响到将来子类对这些方法的重写。
示例类(Demo)则用于展示如何使用类或子系统。以本例而言,示例类提供了和外观类相同的价值。
挑战4.1
写出示例类和外观类的两点区别。
答案参见第302页
javax.swing包包含了JOptionPane,以便弹出一个标准对话框。如下代码会反复显示对话框,直到用户单击了Yes按钮,如图4.1所示。
package app.facade;
 
import javax.swing.*;
import java.awt.Font;
 
public class ShowOptionPane {  
   public static void main(String[] args) {
       Font font = new Font("Dialog", Font.PLAIN, 18);
       UIManager.put("Button.font", font);
       UIManager.put("Label.font", font);
 
       int option;
       do {
           option = JOptionPane.showConfirmDialog(
                    null,
                    "Had enough?",
                    "A Stubborn Dialog",
                    JOptionPane.YES_NO_OPTION);
       } while (option == JOptionPane.NO_OPTION);
   }
}



图4.1  JOptionPane类使显示这样的对话框变得很容易
 
挑战4.2
JOptionPane类让对话框的显示变得简单,那么,该类是一个外观类、工具类还是示例类?给出答案,并阐述你的理由。
答案参见第303页
 
挑战4.3
Java类库中很少有外观类,为什么?
答案参见第303页
点击复制链接 与好友分享!回本站首页
分享到: 更多
您对本文章有什么意见或着疑问吗?请到论坛讨论您的关注和建议是我们前行的参考和动力  
上一篇:1.3 功能
下一篇:1.5 小结
相关文章
图文推荐
JavaScript网页动画设
1.9 响应式
1.8 登陆页式
1.7 主题式
排行
热门
文章
下载
读书

关于我们 | 联系我们 | 广告服务 | 投资合作 | 版权申明 | 在线帮助 | 网站地图 | 作品发布 | Vip技术培训
版权所有: 红黑联盟--致力于做最好的IT技术学习网站