快速业务通道

Java语言简单工厂创立性模式介绍 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-22
n seedful; }

Java语言简单工厂创立性模式介绍(3)

时间:2010-12-17

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

package com.javapatterns.simplefactory;   public class Strawberry implements FruitIF   {    public void grow()    {     log("Strawberry is growing...");    }    public void harvest()    {     log("Strawberry has been harvested.");    }    public void plant()    {     log("Strawberry has been planted.");    }    public static void log(String msg)    {     System.out.println(msg);    } }

代码清单4. 类Strawberry的源代码。

你作为小花果园的主人兼园丁,也是系统的一部分,自然要由一个合适的类来代表,这个类就是 FruitGardener类。这个类的结构请见下面的UML类图。

Java语言简单工厂创立性模式介绍 - 编程入门网

图2. FruitGardener类图。

FruitGardener类会根据要求,创立出不同的水果类,比如萍果Apple,葡萄Grape或草莓Strawberry的实例。而如果接到不合法的要求,FruitGardener类会给出例外BadFruitException。

Java语言简单工厂创立性模式介绍 - 编程入门网

图3. BadFruitException类图。

package com.javapatterns.simplefactory; public class FruitGardener {   public FruitIF factory(String which) throws BadFruitException   {    if (which.equalsIgnoreCase("apple"))    {     return new Apple();    }    else if (which.equalsIgnoreCase("strawberry"))    {     return new Strawberry();    }    else if (which.equalsIgnoreCase("grape"))    {     return new Grape();    }    else    {     throw new BadFruitException("Bad fruit request");   }   } }

Java语言简单工厂创立性模式介绍(4)

时间:2010-12-17

代码清单5. FruitGardener类的源代码。

package com.javapatterns.simplefactory; public class BadFruitException extends Exception {   public BadFruitException(String msg)   {    super(msg);   } }

代码清单6. BadFruitException类的源代码。

在使用时,只须呼叫FruitGardener的factory()方法即可

try {   FruitGardener gardener = new FruitGardener();   gardener.factory("grape");   gardener.factory("apple");   gardener.factory("strawberry");   ...   }   catch(BadFruitException e)   {    ... }

就这样你的小果园一定会有百果丰收啦!

简单工厂模式的定义

总而言之,简单工厂模式就是由一个工厂类根据参数来决定创立出那一种产品类的实例。下面的UML类图就精确定义了简单工厂模式的结构。

Java语言简单工厂创立性模式介绍 - 编程入门网

图4. 简单工厂模式定义的类图。

public class Creator {   public Product factory()   {    return new ConcreteProduct();   } } public interface Product { } public class ConcreteProduct implements Product {   public ConcreteProduct(){} }

代码清单7. 简单工厂模式框架的源代码。

简单工厂模式实际上就是我们要在后面介绍的,工厂方法模式的一个简化了的情形。在读者熟悉了本节所介绍的简单工厂模式后,就不难掌握工厂方法模式了。

Java语言简单工厂创立性模式介绍(5)

时间:2010-12-17

问答题

在本节开始时不是说,工厂模式就是在不使用new操作符的情况下,将......类实例化的吗, 可为什么在具体实现时,仍然使用了new操作符呢?

在本节的小果园系统里有三种水果类,可为什么在图3.(简单工厂模式定义的类图) 中产品(Product)类只有

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号