Renderer.java
package com.example.renderer.bridge;
/**
* 增强型渲染器接口,扩展基础渲染能力。
*
* <p>架构演进记录:
* <ul>
* <li>v1.0 - 基础绘制方法</li>
* <li>v1.1 - 分离为RendererInterface和Renderer</li>
* <li>v1.2 - 增加样式设置和上下文访问</li>
* </ul>
*
* @see RendererInterface 基础绘制接口
* @see RendererFactory 渲染器创建工厂
*/
/**
* 增强渲染器接口,扩展基础渲染能力。
*
* <p>架构角色:桥接模式中的抽象部分,将图形绘制与具体实现解耦。
*
* <p>生命周期:
* 1. 通过RendererFactory创建实例
* 2. 配置样式(setStyle)
* 3. 执行绘制操作(drawXxx)
* 4. 可通过getContext获取底层实现对象
*
* @see RendererFactory 创建实例的工厂类
*/
/**
* 增强渲染器接口,扩展基础渲染能力。
*
* <p>合并RendererInterface功能,避免接口分散。
* 现在包含:
* <ul>
* <li>基础绘制方法(drawXxx)</li>
* <li>样式管理(setStyle)</li>
* <li>渲染上下文访问(getContext)</li>
* <li>帧控制(beginFrame/endFrame)</li>
* </ul>
*/
public interface Renderer {
/**
* 设置渲染样式
* @param stroke 线条颜色(支持CSS颜色格式)
* @param fill 填充颜色(支持CSS颜色格式)
* @param width 线宽(像素,必须>=0)
* @throws IllegalArgumentException 如果宽度为负数
*/
void setStyle(String stroke, String fill, int width) throws IllegalArgumentException;
/**
* 获取当前渲染上下文
* @return 底层实现对象(Swing返回Graphics2D,SVG返回StringBuilder等)
*/
Object getContext();
/**
* 开始新帧/页的绘制
*/
default void beginFrame() {}
/**
* 结束当前帧/页的绘制
*/
default void endFrame() {}
/**
* 绘制圆形
* @param x 圆心x坐标
* @param y 圆心y坐标
* @param radius 圆形半径(必须>0)
* @throws IllegalArgumentException 如果半径不合法
* @throws IllegalStateException 如果渲染器未正确初始化
*/
void drawCircle(int x, int y, int radius) throws IllegalArgumentException, IllegalStateException;
/**
* 绘制矩形
* @param x 左上角x坐标
* @param y 左上角y坐标
* @param width 矩形宽度(必须>0)
* @param height 矩形高度(必须>0)
* @throws IllegalArgumentException 如果宽度或高度不合法
*/
void drawRectangle(int x, int y, int width, int height);
/**
* 绘制椭圆
* @param x 椭圆外接矩形左上角x坐标
* @param y 椭圆外接矩形左上角y坐标
* @param width 椭圆宽度(必须>0)
* @param height 椭圆高度(必须>0)
* @throws IllegalArgumentException 如果宽度或高度不合法
*/
void drawEllipse(int x, int y, int width, int height);
/**
* 绘制三角形
* @param x1 第一个顶点x坐标
* @param y1 第一个顶点y坐标
* @param x2 第二个顶点x坐标
* @param y2 第二个顶点y坐标
* @param x3 第三个顶点x坐标
* @param y3 第三个顶点y坐标
*/
void drawTriangle(int x1, int y1, int x2, int y2, int x3, int y3);
}