接口 Shape

所有已知实现类:
Circle, Ellipse, Rectangle, Triangle

public interface Shape
Shape接口定义了所有图形对象的基本行为。 作为图形系统的核心接口,它支持以下操作:
  • 渲染 - 通过render(Renderer)方法
  • 移动 - 通过move(int, int)方法
  • 访问者模式 - 通过accept(ExportVisitor)方法
所有具体图形类(如圆形、矩形等)都应实现此接口。

该接口遵循以下设计模式:

  • 桥接模式 - 通过Renderer参数实现绘制逻辑的解耦
  • 访问者模式 - 通过accept方法支持对图形的扩展操作
  • 命令模式 - move方法支持图形位置的变更操作

典型实现示例:


 public class Circle implements Shape {
     public void render(Renderer r) {
         r.drawCircle(x, y, radius);
     }
     // 其他方法实现...
 }
 
从以下版本开始:
2025-06-24
版本:
1.0
作者:
DeepSeek-Coder
另请参阅:
  • 方法概要

    修饰符和类型
    方法
    说明
    void
    接受访问者访问此图形对象,实现访问者模式。
    创建并返回当前图形的一个深拷贝。
    void
    move(int dx, int dy)
    移动图形的位置。
    void
    render(Renderer renderer)
    使用指定的渲染器绘制图形。
    default void
    validatePosition(int x, int y)
    验证坐标位置是否有效
  • 方法详细资料

    • render

      使用指定的渲染器绘制图形。

      具体绘制逻辑由实现类决定,渲染器参数提供实际的绘制能力。

      实现类应确保:

      • 参数renderer不为null
      • 正确调用renderer的对应绘制方法
      • 处理渲染器抛出的异常
      参数:
      renderer - 用于绘制图形的渲染器实现(非null)
      抛出:
      NullPointerException - 如果渲染器参数为null
      IllegalArgumentException - 如果当前图形的参数不合法(如负尺寸)
      IllegalStateException - 如果图形处于不可渲染的状态
      从以下版本开始:
      2025-06-29
    • clone

      创建并返回当前图形的一个深拷贝。

      此方法返回图形对象的精确副本,包括所有内部状态数据。对于包含引用类型字段的对象,需要递归实现深拷贝。

      实现要求:

      • 必须返回独立的新对象
      • 修改副本不应影响原对象
      • 字段值为引用类型时必须深拷贝
      返回:
      图形的新副本
      抛出:
      CloneNotSupportedException - 如果图形不支持克隆
      从以下版本开始:
      2025-06-29
    • validatePosition

      default void validatePosition(int x, int y)
      验证坐标位置是否有效

      此方法用于检查图形坐标是否在合理范围内

      参数:
      x - x坐标(单位为像素)
      y - y坐标(单位为像素)
      抛出:
      IllegalArgumentException - 当坐标为负数时抛出
      从以下版本开始:
      2025-06-29
    • move

      void move(int dx, int dy)
      移动图形的位置。

      根据给定的偏移量调整图形的坐标位置,正数表示向右/下移动,负数表示向左/上移动。

      参数:
      dx - X轴方向的移动距离(像素)
      dy - Y轴方向的移动距离(像素)
      从以下版本开始:
      2025-06-29
    • accept

      void accept(ExportVisitor visitor)
      接受访问者访问此图形对象,实现访问者模式。

      允许访问者对图形对象进行操作而不修改图形本身。

      参数:
      visitor - 用于处理图形的访问者对象(非null)
      抛出:
      NullPointerException - 如果visitor为null
      从以下版本开始:
      2025-06-29