Shape.java
package example1;
public interface Shape {
public void draw();
public void erase();
}
Circle.java
package example1;
public class Circle implements Shape {
@Override
public void draw() {
System.out.println("添加圆形");
}
@Override
public void erase() {
System.out.println("删除圆形");
}
}
Rectangle.java
package example1;
public class Rectangle implements Shape {
@Override
public void draw() {
System.out.println("添加矩形");
}
@Override
public void erase() {
System.out.println("删除矩形");
}
}
Triangle.java
package example1;
public class Triangle implements Shape {
@Override
public void draw() {
System.out.println("添加三角形");
}
@Override
public void erase() {
System.out.println("删除三角形");
}
}
Constants.java
package example1;
public class Constants {
public static final String TYPE_CIRCLE = "circle";
public static final String TYPE_RECTANGLE = "rectangle";
public static final String TYPE_TRIANGLE = "triangle";
}
ShapeFactory.java
package example1;
public class ShapeFactory {
public static Shape createShape(String type) throws UnsupportedShapeException {
Shape shape = null;
if (type.equals(Constants.TYPE_CIRCLE)) {
shape = new Circle();
}else if (type.equals(Constants.TYPE_RECTANGLE)) {
shape = new Rectangle();
}else if (type.equals(Constants.TYPE_TRIANGLE)) {
shape = new Triangle();
}else {
throw new UnsupportedShapeException("创建不支持的类型");
}
return shape;
}
}
UnsupportedShapeException.java
package example1;
public class UnsupportedShapeException extends Exception {
public UnsupportedShapeException() {
super();
}
public UnsupportedShapeException(String message) {
super(message);
}
}
Client.java
package example1;
public class Client {
public static void main(String[] args) {
Shape shape = null;
try {
shape = ShapeFactory.createShape(Constants.TYPE_CIRCLE);
shape.draw();
} catch (UnsupportedShapeException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}