网络编程 | 站长之家 | 网页制作 | 图形图象 | 操作系统 | 冲浪宝典 | 软件教学 | 网络办公 | 邮件系统 | 网络安全 | 认证考试 | 系统进程
Firefox | IE | Maxthon | 迅雷 | 电驴 | BitComet | FlashGet | QQ | QQ空间 | Vista | 输入法 | Ghost | Word | Excel | wps | Powerpoint
asp | .net | php | jsp | Sql | c# | Ajax | xml | Dreamweaver | FrontPages | Javascript | css | photoshop | fireworks | Flash | Cad | Discuz!
当前位置 > 网站建设学院 > 网络编程 > Java
Tag:注入,存储过程,分页,安全,优化,xmlhttp,fso,jmail,application,session,防盗链,stream,无组件,组件,md5,乱码,缓存,加密,验证码,算法,cookies,ubb,正则表达式,水印,索引,日志,压缩,base64,url重写,上传,控件,Web.config,JDBC,函数,内存,PDF,迁移,结构,破解,编译,配置,进程,分词,IIS,Apache,Tomcat,phpmyadmin,Gzip,触发器,socket
网络编程:ASP教程,ASP.NET教程,PHP教程,JSP教程,C#教程,数据库,XML教程,Ajax,Java,Perl,Shell,VB教程,Delphi,C/C++教程,软件工程,J2EE/J2ME,移动开发
本月文章推荐
.基于Nokia S60的游戏开发.
.什么是AOP系列之一:AOP概念解析.
.Hibernate的缓存机制介绍.
.for 语句.
.Thinking:Java中static、this、s.
.JAVA学习笔记swing JFrame窗口学.
.Sun 认证 Java 程序员(SCJP).
.Ruby,Java的劲敌.
.有状态会话 bean运行结束时应及时.
.Redhat9下的java中文问题解决.
.简述JAVA对象的产生与使用.
.JAVA基础:深入浅出Java的访问者.
.使用MIDP2.0开发游戏(4)改进的地.
.Hibernate访问多个数据库.
.JBuilder2005单元测试体验之测试.
.一个处理数据库异常的类,按照错.
.Ant 简介.
.Java语言基础二.
.使用StopWatch类输出时间戳.
.配制Spring事务和JdbcTemplate使.

外观模式(Fa?ade pattern)(1)

发表日期:2008-1-5


描述

外观模式(Façade pattern)涉及到子系统的一些类。所谓子系统,是为提供一系列相关的特征(功能)而紧密关联的一组类。例如,一个Account类、Address类和CreditCard类相互关联,成为子系统的一部分,提供在线客户的特征。

在真实的应用系统中,一个子系统可能由很多类组成。子系统的客户为了它们的需要,需要和子系统中的一些类进行交互。客户和子系统的类进行直接的交互会导致客户端对象和子系统之间高度耦合。任何的类似于对子系统中类的接口的修改,会对依靠于它的所有的客户类造成影响。

外观模式(Façade pattern)很适用于在上述情况。外观模式(Façade pattern)为子系统提供了一个更高层次、更简单的接口,从而降低了子系统的复杂度和依靠。这使得子系统更易于使用和治理。

外观是一个能为子系统和客户提供简单接口的类。当正确的应用外观,客户不再直接和子系统中的类交互,而是与外观交互。外观承担与子系统中类交互的责任。实际上,外观是子系统与客户的接口,这样外观模式降低了子系统和客户的耦合度。

我们可以看到:外观对象隔离了客户和子系统对象,从而降低了耦合度。当子系统中的类进行改变时,客户端不会像以前一样受到影响。

尽管客户使用由外观提供的简单接口,但是当需要的时候,客户端还是可以视外观不存在,直接访问子系统中的底层次的接口。这种情况下,它们之间的依靠/耦合度和原来一样。

例子:

让我们建立一个应用:

(1)    接受客户的具体资料(账户、地址和信用卡信息)

(2)    验证输入的信息

(3)    保存输入的信息到相应的文件中。

这个应用有三个类:Account、Address和CreditCard。每一个类都有自己的验证和保存数据的方法。

Listing 22.1: AccountClass 

  1. public class Account { 
  2.   String firstName; 
  3.   String lastName; 
  4.   final String ACCOUNT_DATA_FILE = "AccountData.txt"; 
  5.   public Account(String fname, String lname) { 
  6.     firstName = fname; 
  7.     lastName = lname; 
  8.   } 
  9.   public boolean isValid() { 
  10.     /* 
  11.      Let's go with simpler validation 
  12.      here to keep the example simpler. 
  13.     */ 
  14.         … 
  15.         … 
  16.   } 
  17.   public boolean save() { 
  18.     FileUtil futil = new FileUtil(); 
  19.     String dataLine = getLastName() + ”," + getFirstName(); 
  20.     return futil.writeToFile(ACCOUNT_DATA_FILE, dataLine, 
  21.     truetrue); 
  22.   } 
  23.   public String getFirstName() { 
  24.     return firstName; 
  25.   } 
  26.   public String getLastName() { 
上一篇:网上收集的部分java资料 人气:632
下一篇:微软.Net VS Java两军对垒 Web服务步履艰难 人气:627
浏览全部Java的内容 Dreamweaver插件下载 网页广告代码 祝你圣诞节快乐 2009年新年快乐