architecture

/** @page architecture 系统架构

图形渲染系统架构文档

系统概述

本系统提供跨平台的2D图形渲染能力,支持多种渲染后端(Swing/SVG/Legacy),采用桥接模式将渲染接口与实现分离。

核心架构

1. 桥接模式 (渲染架构)

5. 适配器模式 (Legacy兼容)

2. 工厂模式 (对象创建)

3. 命令模式 (Undo/Redo实现)

4. 观察者模式 (变更通知)

5. 访问者模式 (Visitor Pattern)

核心组件

1. 渲染器接口 (Renderer)

public interface Renderer {
    // 设置绘制样式
    void setStyle(String stroke, String fill, int width);
    
    // 获取渲染上下文
    Object getContext();
    
    // 帧控制
    void beginFrame();
    void endFrame();
    
    // 图形绘制方法
    void drawCircle(int x, int y, int radius);
    void drawRectangle(int x, int y, int width, int height);
    void drawEllipse(int x, int y, int width, int height);
    void drawTriangle(int x1, int y1, int x2, int y2, int x3, int y3);
}

2. Swing渲染器 (SwingRenderer)

SwingRenderer renderer = new SwingRenderer();
renderer.setGraphics(graphics2D); // 必须设置绘图上下文
renderer.drawCircle(100, 100, 50);

3. SVG渲染器 (SVGRenderer)

SVGRenderer renderer = new SVGRenderer();
renderer.beginFrame();
renderer.drawCircle(100, 100, 50);
renderer.endFrame(); // 输出SVG到控制台
<svg xmlns='http://www.w3.org/2000/svg'>
  <circle cx='100' cy='100' r='50'/>
</svg>

4. 旧版渲染适配器 (LegacyRendererAdapter)

LegacyRenderer legacy = new LegacyRendererImpl();
Renderer adapter = new LegacyRendererAdapter(legacy);
adapter.drawCircle(100, 100, 50); // 调用旧版实现

5. 远程渲染代理 (RemoteRendererProxy)

Renderer realRenderer = new SwingRenderer();
Renderer proxy = new RemoteRendererProxy(realRenderer);
proxy.drawCircle(100, 100, 50); // 通过代理调用

典型工作流程

  1. 通过RendererFactory获取渲染器实例
  2. 使用ShapeFactory创建图形对象
  3. 执行Command操作图形
  4. 渲染器将图形绘制到目标
  5. 观察者记录变更
  6. 访问者导出图形数据

*/