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。