简单工厂模式、工厂方法模式实验
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
1. 使用简单工厂模式设计一个可以创建不同几何形状(Shape),如圆形(Circle)、矩形(Rectangle)的绘图工具工厂类,每个几何图形均有绘制draw()和擦除erase()两个方法,要求在绘制不支持的几何图形时,抛出一个UnSupportedShapeException。绘制类图并编程模拟实现。
代码实现
Shape.java
Circle.java
Rectangle.java
ShapeFactory.java
UnSupportedShapeException.java
Test.java
如果向工厂类传入参数“circle”,则返回一个Circle对象,如果传入参数“rectangle”,则返回一个Rectangle对象。现需要增加一个新的三角形Triangle类,如果传入参数“triangle”,则返回一个Triangle对象,对代码进行修改并注意工厂类的变化。
添加一个Triangle类
Triangle.java
ShapeFactory类的代码,违背了开闭原则。
ShapeFactory.java
Assert.java
2. 现需要设计一个程序来读取多种不同类型的图片格式,针对每一种图片格式都设计一个图片读取器(ImageReader),如GIF图片读取器(GifReader)用于读取GIF格式的图片、JPG 图片读取器(JpgReader)用于读取JPG格式的图片,所有的图片读取器都有读取图片的方法readImage()。图片读取器对象通过图片读取器工厂ImageReaderFactory来创建,ImageReaderFactory是一个抽象工厂接口,定义了创建图片读取器的工厂方法createImageReader(),其实现类GifReaderFactory用于创建GIF图片读取器(GifReader)对象,
JpgReaderFactory类用于创建JPG图片读取器(JpgReader)对象。使用工厂方法模式完成该程序的设计,绘制类图并编程模拟实现。
代码实现:
ImageReader.java
package org.han.demo5;
public interface ImageReader {
void readImage();
}
GifReader.java
package org.han.demo5;
public class GifReader implements ImageReader{
@Override
public void readImage() {
System.out.println("读取GIF...");
}
}
JpgReader.java
package org.han.demo5;
public class JpgReader implements ImageReader {
public void readImage() {
System.out.println("读取JPG...");
}
}
ImageReaderFactory.java
GifReaderFactory.java
JpgReaderFactory.java
Client.java
XMLUtil.java
config.xml