本文介绍如何通过封装矩形创建逻辑为可复用函数,避免重复代码,解决“修改同一对象导致覆盖而非新增”的常见误区。
本文介绍如何通过封装矩形创建逻辑为可复用函数,避免重复代码,解决“修改同一对象导致覆盖而非新增”的常见误区。
在像素画(pixel art)等需要大量重复绘制相同尺寸、不同位置/颜色图形的场景中,直接复用同一个 `Rectangle` 实例会导致所有操作作用于同一对象——正如示例中调用 `setPosition()` 和 `setColor()` 后再 `add()`,实际只是移动并重绘了原有图形,而非添加新图形。根本原因在于:JavaScript 中对象是引用类型,`grey` 始终指向内存中的唯一实例。要真正实现“多次使用同一形状定义”,必须每次创建全新的实例。最佳实践是封装为工厂函数(Factory Function),将尺寸、颜色、坐标等作为参数动态生成独立图形对象:
function getColoredRectangle(color, x, y, width = 10, height = 10) {
const rect = new Rectangle(width, height);
rect.setPosition(x, y);
rect.setColor(color);
return rect;
}
// 每次调用都返回一个全新矩形对象
add(getColoredRectangle("#686968", 100, 400)); // 第一个灰色方块
add(getColoredRectangle("#686968", 110, 400)); // 第二个灰色方块(独立实例)
add(getColoredRectangle("#123456", 120, 400)); // 第三个蓝色方块
✅ 关键要点:
在 Java 中初始化和管理阿里云 SDK客户端。包括单例模式、线程安全、endpoint 与 region 配置、VPC 终端节点、同步与异步等。
- 函数内部 new Rectangle(...) 确保每次调用都生成新对象;
- 使用默认参数(width = 10, height = 10)提升灵活性,省略时自动采用标准像素尺寸;
- 颜色与坐标作为必填参数,明确区分每个实例的视觉与空间属性。
⚠️ 注意事项:
- 切勿对返回的矩形对象做全局缓存后反复 add() —— 这仍会触发单实例复用问题;
- 若需批量生成(如 10×10 像素网格),可结合嵌套循环调用该函数,大幅提升编码效率;
- 此模式同样适用于 Circle、Line 等其他图形类,只需调整构造逻辑即可扩展。
通过函数封装,你不仅解决了手动重复输入的痛点,更建立了可维护、可扩展的图形构建范式——这是编写清晰、健壮图形应用的基础习惯。
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南










