点击这里给我发消息 点击这里给我发消息

Factory Method模式在Javamail中的应用

添加时间:2013-12-7
    相关阅读: 软件设计 设计 软件 技术 解决方案 方案 数据库

  设计模式在软件工程中占有重要地位,而JavaMail是Java平台的一个扩展,为管理电子邮件提供了统一的应用编程接口。本文讨论Factory Method设计模式在Javamail中的应用。

  1、模式简介

  模式的概念最早是出现在城市建筑领域的。lexander的一本关于建筑的书中明确的给出了模式的概念,用来解决在建筑中的一些问题。后来,这个概念逐渐的被计算机科学所采纳。《Design Patterns: Elements of Reusable Object-Oriented Software》[1](以下简称《设计模式》)则堪称设计模式领域的经典书籍之一。它开创了软件工程领域的模式化进程。

  设计模式的简单定义就是对于一类重复出现的问题的可重用的解决方案。在软件工程中一个设计模式解决一类软件设计问题。设计模式中许多方法其实很早就出现了,并且在应用中也比较多。但是直到《设计模式》出来之前,并没有一种统一的认识。或者说,那时候并没有对模式形成一个概念。这些方法还仅仅是处在经验阶段,并没有能够被系统的整理,形成一种理论。

  每一个设计模式都系统的命名,解释和评价了面向对象系统中的一个重要的和重复出现的设计。这样,我们只要搞清楚这些设计模式,就可以完全或者说很大程度上吸收了那些蕴含在模式中的宝贵的经验,对面向对象的系统能够有更为完善的了解。更为重要的是,这些模式都可以直接用来指导面向对象系统中至关重要的对象建模问题。如果有相同的问题背景,那么很简单,直接套用这些模式就可以了。这可以省去你很多的工作。

  在《设计模式》一书中涉及到23个模式,被分类为创建型模式(Creational Patterns),结构型模式(Structural Patterns)和行为模式(Behavioral Patterns),分别从对象的创建,对象和对象间的结构组合以及对象交互这三个方面为面向对象系统建模方法给予了解析和指导。

  其中创建型设计模式(Creational Patterns)描述怎样创建一个对象。它隐藏对象创建的细节,使程序代码不依赖具体的对象,这样当我们增加一个新的对象时几乎不需要修改代码。结构型设计模式(Structural Patterns)描述类和对象之间怎么组织起来形成大的结构,主要使用继承来组织接口或实现。行为型设计模式(Behavioral Patterns)描述算法以及对象之间的任务分配,它所描述的不仅仅是对象或类的设计模式,还有它们之间的通讯模式。

  设计模式在Java中得到了广泛应用。在《Thinking in Java》[3]一书中,Bruce Eckel介绍了Singleton、Prototype、Observer、Visitor等设计模式在Java中的具体应用和实现,以下将介绍Factory Method设计模式在Javamail中的应用。从中可看出设计模式不仅有助于软件设计,对理解软件结构也很有帮助。

  2、Javamail简介

  经过几年的发展,Java语言已相当成熟,并在各领域得到广泛应用。特别是J2EETM(JavaTM 2 Platform, Enterprise Edition)的出现,更是极大地方便了分布式应用程序的创建。作为Java平台的一个扩展--JavaMail,也是J2EETM的技术之一,为管理电子邮件提供了统一的应用编程接口(API,Application Programming Interface)。它使服务提供者(service providers)可以使用Java语言为它们自己的邮件或消息处理系统提供一致的接口,应用程序可以使用这些一致的接口方便地与这些系统通信。

  以下是一些Javamail API中的抽象类,由它们可以组成典型的邮件系统:

  Message-代表一个电子邮件消息。

  Folder-以分级的形式组织消息。一个Folder可以包含多条消息、多个Folder。

  Store-代表由邮件服务器 style="COLOR: #000000" href="http://server.it168.com/" target=_blank>服务器管理的消息数据库,一个具体的Store使用一种特殊的访问协议(如Pop3Store使用Pop3协议,IMAPStore使用IMAP协议),并可包含一个或多个Folder。

  Transport-代表一个特殊的传输协议,一个具体的Transport使用具体的传输协议发送消息。

  3、设计模式Factory Method

  此模式属于创建型设计模式,它只定义创建对象的接口,而由它的子类负责创建具体的对象,利用子类实例化不同的对象。图一是Factory Method 模式结构的类图(Class Diagram),其中:

  Product 定义了由factory method所创建对象的统一接口。

  ConcreteProduct 具体的类,实现Product接口。

  Creator 一般为抽象类,声明若干factory method(方法),由它创建类型为Product的对象。正因为它能"生产"对象,所以称为factory method。Creator也可能拥有一个方法创建某个缺省的具体对象。

  ConcreteCreator 重载factory method以创建某个 ConcreteProduct 的具体实例。

  也就是说Creator依赖于ConcreteCreator创建Product型的ConcreteProduct对象。 Factory method使应用程序代码只需处理Product接口,而与具体的类(ConcreteProduct)无关,增强了代码可重用性,因为它独立于用户定义的具体的类。

  

[1] [2] 下一页

咨询热线:020-85648757 85648755 85648616 0755-27912581 客服:020-85648756 0755-27912581 业务传真:020-32579052
广州市网景网络科技有限公司 Copyright◎2003-2008 Veelink.com. All Rights Reserved.
广州商务地址:广东省广州市黄埔大道中203号(海景园区)海景花园C栋501室
= 深圳商务地址:深圳市宝源路华丰宝源大厦606
研发中心:广东广州市天河软件园海景园区 粤ICP备05103322号 工商注册