动态网站制作指南 [  QQ表情  ]
[ 投票调查 ]
[ 企业邮箱 ]
[ 网站空间 ]
网络编程 | 站长之家 | 网页制作 | 图形图象 | 操作系统 | 冲浪宝典 | 软件教学 | 网络办公 | 邮件系统 | 网络安全 | 认证考试 | 系统进程
ASP源码 | .Net源码 | PHP源码 | JSP源码 | JAVA源码 | CGI源码 | VB源码 | C++源码 | Delphi源码 | PB源码 | VF源码 | 汇编 | 服务器
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,移动开发
文章搜索服务
邮件订阅
输入你的邮件地址,
你将不会错过任何关于:
[ Java教程 ]的信息

本月文章推荐
.J2ME中使用Canvas制作简单的游戏.
.哈希崩溃及避免方法.
.多网口的IPNetworkMultipathingf.
.Java网络编程之传输控制协议(三).
.Java学习路径(三)过程篇.
.用Java Swing制作欢迎屏幕.
.JBuilder 9.0开发实用技巧七招.
.Java 模型以外的类型策略.
.工作流引擎.
.关于spring中的aop的解释.
.用Java类实现JavaMail发送邮件的.
.Java应用的动态扩展.
.“JavaStudioEnterprise7”新功能.
.Java的文件 读和写.
.Motorola V180,V501,V600,C650等.
.使用JavaExcel API 往excel中插入.
.spring 2.0 的事务自动处理.
.用Applet写的菜单程序 machine.
.基于Nokia S40的猜数字游戏之一.
.解析Java类和对象的初始化过程.

爪哇语言简单工厂创立性模式介绍

发表日期:2008-1-5 |



  研究和使用创立性模式的必要性

  面向对象的设计的目的之一,就是把责任进行划分,以分派给不同的对象。我们推荐这种划分责任的作法, 是因为它和封装(Encapsulation)和分派(Delegation)的精神是相符合的。创立性模式把对象的创立过程封装起来,使得创立实例的责任与使用实例的责任分割开, 并由专门的模块分管实例的创立,而系统在宏观上不再依靠于对象创立过程的细节。

  所有面向对象的语言都有固定的创立对象的办法。爪哇语的办法就是使用new操作符。比如

StringBuffer s = new StringBuffer(1000);
  就创立了一个对象s,其类型是StringBuffer。使用new操作符的短处是事先必须明确知道要实例化的类是什么, 而且实例化的责任往往与使用实例的责任不加区分。使用创立性模式将类实例化,首先不必事先知道每次是要实例化哪一个类, 其次把实例化的责任与使用实例的责任分割开来,可以弥补直接使用new操作符的短处。

  而工厂模式就是专门负责将大量有共同接口的类实例化,而且不必事先知道每次是要实例化哪一个类的模式。

  工厂模式有几种形态

  工厂模式有以下几种形态:

   简单工厂(Simple Factory)模式

   工厂方法(Factory Method)模式,又称多形性工厂(Polymorphic Factory)模式

   抽象工厂(Abstract Factory)模式,又称工具箱(Kit或Toolkit)模式
  介绍简单工厂模式

  比如说,你有一个描述你的后花园的系统,在你的后花园里有各种的花,但还没有水果。你现在要往你的系统里引进一些新的类,用来描述下列的水果:

  葡萄 Grapes

  草莓 Strawberry

  萍果 Apple

  花和水果最大的不同,就是水果最终是可以采摘食用的。那么,很自然的作法就是建立一个各种水果都适用的接口,这样一来这些水果类作为相似的数据类型就可以和你的系统的其余部分,如各种的花有所不同,易于区分。

爪哇语言简单工厂创立性模式介绍(图一)
   图1. Grape, Strawberry和Apple是拥有共同接口FruitIF的类。
package com.Javapatterns.simplefactory;

public interface FruitIF {
 void grow();

 void harvest();

 void plant();

 String color = null;
 String name = null;
}
     代码清单1. 接口FruitIF的源代码。这个接口确定了水果类必备的方法:种植plant(),生长grow(), 以及收获harvest()。

package com.javapatterns.simplefactory;

public class Apple implements FruitIF
{

 public void grow()
 {
  log("Apple is growing...");
 }

 public void harvest()
 {
  log("Apple has been harvested.");
 }

 public void plant()
 {
  log("Apple has been planted.");
 }

 public static void log(String msg)
 {
  System.out.println(msg);
 }

 public int getTreeAge(){ return treeAge; }

 public void setTreeAge(int treeAge){ this.treeAge = treeAge; }

 private int treeAge;
}
     代码清单2. 类Apple的源代码。萍果是多年生木本植物,因此具备树龄treeAge性质。
package com.javapatterns.simplefactory;

public class Grape implements FruitIF
{
 public void grow()
 {
  log("Grape is growing...");
 }

 public void harvest()
 {
  log("Grape has been harvested.");
 }

 public void plant()
 {
  log("Grape has been planted.");
 }

 public static void log(String msg)
 {
  System.out.println(msg);
  }

 public boolean getSeedful()
 {
  return seedful;
 }

 public void setSeedful(boolean seedful)
 {
  this.seedful = seedful;
 }

 private boolean seedful;
}
     代码清单3. 类Grape的源代码。葡萄分为有籽与无籽两种,因此具有seedful性质。


上一篇:Eclipse 的字符串分区共享优化机制 人气:439
下一篇:开发Eclipse下的自定义控件 人气:641
浏览全部Java的内容 Dreamweaver插件下载 常用网页广告代码全集
  最新网站源码 最新软件下载
2008-8-21 Nucleus v3.33 多国语言版
2008-8-21 HDWiki v4.0 bulid 080821 UTF-8
2008-8-21 明科在线客服系统 v6.0
2008-8-21 KesionCMS v5.0.2 正式版 utf-8
2008-8-21 KesionEshop v5.0.2 正式版 utf-8
2008-8-21 HDWiki v4.0 bulid 080821 GBK
2008-8-21 新文互动酷站展示系统 v1.5
2008-8-21 Punbb v1.2.20 多国语言版
2008-8-21 QQ头像网 beta
2008-8-16 iLaba Player(小喇叭播放器) v2.
2008-8-16 DoubleClickFix 鼠标双击修正工具
2008-8-16 CrystalCPUID 4.15.2.451
2008-8-16 VeryCD 电驴(easyMule) 1.0.4 Bu
2008-8-16 uTorrent 1.8 Build 11813 - Sta
2008-8-16 比特精灵(BitSpirit) v3.3.2.287
2008-8-16 StayInTune音叉 v1.0 破解版
2008-8-16 iChing《周易》汉化补丁 v1.0
2008-8-16 Starmap星空图v1.0汉化破解版
  发表评论
姓 名: 验证码:
内 容:
[ 汉字翻译拼音 ] [ 广告代码 ] [ 符号对照表 ] [ 进制转换 ] [ 经典小工具 ] [ 个税计算 ] [ 汉字简繁转换 ] [ 普通单位换算 ] [ 公制单位换算 ]
[ 生辰老黄历 ] [ 国内电话区号 ] [ 国家代码与域名缩写 ] [ 文字加密解密 ] [ 健康查询 ] [ 万年历 ] [ 手机号码查询 ] [ ip搜索 ] [ Google PR查询 ]
业务联系 | 广告刊登 | 频道合作 | 投稿荐稿 | 联系方式 | 加入收藏 | RSS订阅
Copyright © 2000-2008 www.knowsky.com All rights reserved | 网络实名:动态网站制作指南 | 沪ICP备05001343号