// 外观类
public class ShapeMaker {
private Shape rectangle;
private Shape circle;
public ShapeMaker() {
rectangle = new Rectangle();
circle = new Circle();
}
public void drawRectangle() {
rectangle.draw();
}
public void drawCircle() {
circle.draw();
}
}
// 形状接口
public interface Shape {
void draw();
}
// 矩形类
public class Rectangle implements Shape {
@Override
public void draw() {
System.out.println("Rectangle::draw()");
}
}
// 圆形类
public class Circle implements Shape {
@Override
public void draw() {
System.out.println("Circle::draw()");
}
}
// 客户端代码
public class Client {
public static void main(String[] args) {
ShapeMaker shapeMaker = new ShapeMaker();
shapeMaker.drawRectangle();
shapeMaker.drawCircle();
}
}
在上面的例子中,我们可以看到,客户端只需要使用 ShapeMaker 类的接口,就可以完成绘制矩形和圆形的操作,而不需要直接使用 Rectangle 和 Circle 类的接口。这就使得客户端的代码更加简洁,同时也隐藏了子系统的复杂性。