您现在的位置: 天极网 > 开发频道 > 爪哇语言简单工厂创立性模式介绍
全文

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

2001-11-14 11:46作者:阎宏出处:yesky责任编辑:方舟

  问答题

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

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

  请使用简单工厂模式设计一个创立不同几何形状,如圆形,方形和三角形实例的描图员(Art Tracer)系统。每个几何图形都要有画出draw()和擦去erase()两个方法。当描图员接到指令,要求创立不支持的几何图形时,要提出BadShapeException例外。

  请简单举例说明描图员系统怎样使用。

  在简单工厂模式的定义(见图4)中和花果园例子中,factory()方法都是属于实例的, 而非静态的或是类的方法。factory()方法可不可以是静态的方法呢?

  问答题答案

  对整个系统而言,工厂模式把具体使用new操作符的细节包装和隐藏起来。当然只要程序是用爪哇语言写的, 爪哇语言的特征在细节里一定会出现的。

  图3.(简单工厂模式定义的类图),是精减后的框架性类图,用于给出这一模式的准确而精练的定义。产品(Product)类到底会有几种,则要对每个系统作具体分析。

  这里给出问题的完整答案。描图员(Art Tracer)系统的UML如下


              系统的源代码如下

package com.javapatterns.simplefactory.exercise;

public class ArtTracer
{
 public Shape factory(String which) throws BadShapeException
 {
  if (which.equalsIgnoreCase("circle"))
  {
   return new Circle();
  }
  else if (which.equalsIgnoreCase("square"))
  {
   return new Square();
  }
  else if (which.equalsIgnoreCase("triangle"))
  {
   return new Triangle();
  }
  else
  {
   throw new BadShapeException(which);
  }
 }
}

  代码清单8. ArtTracer类的源代码。

package com.javapatterns.simplefactory.exercise;

public interface Shape
{
 void draw();

 void erase();
}

  代码清单9. Shape接口的源代码。

package com.javapatterns.simplefactory.exercise;

 public class Square implements Shape
 {
  public void draw()
  {
   System.out.println("Square.draw()");
  }

 public void erase()
 {
  System.out.println("Square.erase()");
 }
}

  代码清单10. Square类的源代码。

package com.javapatterns.simplefactory.exercise;

public class Circle implements Shape
{
 public void draw()
 {
  System.out.println("Circle.draw()");
 }

 public void erase()
 {
  System.out.println("Circle.erase()");
 }
}

  代码清单11. Circle类的源代码。

package com.javapatterns.simplefactory.exercise;

public class Triangle implements Shape
{
 public void draw()
 {
  System.out.println("Triangle.draw()");
 }

 public void erase()
 {
  System.out.println("Triangle.erase()");
 }
}

  代码清单12. Triangle类的源代码。

package com.javapatterns.simplefactory.exercise;

public class BadShapeException extends Exception
{
 public BadShapeException(String msg)
 {
  super(msg);
 }
}

  代码清单13. BadShapeException类的源代码。

  描图员(Art Tracer)系统使用方法如下

try
{
ArtTracer art = new ArtTracer();

art.factory("circle");
art.factory("square");
art.factory("triangle");

art.factory("diamond");
}
catch(BadShapeException e)
{
...
}

  注意对ArtTracer类提出菱形(diamond)请求时,会收到BadShapeException例外。

  显然factory()可以是静态的或是类的方法。本文这样介绍简单工厂模式,是为了能方便与后面介绍的工厂方法模式作一比较。


共8页。 9 7 1 2 3 4 5 6 7 8

软件资讯·软件下载尽在天极软件

共8页。 首页 上一页 4 5 6 7 8
相关搜索:
相关文章及软件
关注此文读者还看过
热门关注
特别推荐
网友关注
软件下载
娱乐下载
驱动下载
文章排行
本周
本月
最近更新
关于我们|About us|网站律师|天极服务|电子杂志|RSS订阅|加入我们|网站地图
TMG
Copyright (C) 1999-2009 Chinabyte.com, All Rights Reserved 版权所有 天极网络
商务联系、网站内容、合作建议:010-82657868
版权声明 在线提交意见反馈 渝ICP证B2-20030003号
经营性网站备案信息 网警备案 中国网站排名
天极传媒:天极网|比特网|IT专家网|IT商网|52PK游戏网|IT分众