【发布时间】:2015-02-24 08:42:27
【问题描述】:
我有一个 Point 类,它有一个静态类型变量 Visual。我将其设为静态是因为: Visual 类型包含在点之间绘制点和线等的方法。 Visual 类型还会在每次实例化 Visual 对象时创建一个空白画布。由于我需要在单个画布上可视化一组点,因此 Visual 被制作为静态单例。我的问题是我有一个客户端类 PointOp,它对 Point 对象执行一些操作。我希望 PointOp 实例 1 中的所有 Point 对象位于单个画布上,而 PointOp 实例 2 中的所有 Point 对象位于单个不同的画布上。我无法通过简单地实例化两个 PointOp 对象来实现这一点。来自两个实例的所有 Point 对象都绘制在同一个画布上。我该如何解决这个问题?有没有办法可以在不同的 PointOp 对象中维护不同版本的 Visual 对象?
public class Point
{
static Visual visualize = null;
public void draw() // draw() method of Point
{
if (visualize == null)
visualize = new Visual();
visualize.draw(); // draw() method of type Visual evoked.
}
}
public class PointOp()
{
Point[] point;
public PointOp()
{
// Instantiate an array of Point objects for operation.
}
PointOp instance1 = new PointOp();
instance1.point[0].draw();
PointOp instance2 = new PointOp();
instance2.point[0].draw(); // Problem: all Points mixed on single canvas.
}
【问题讨论】:
标签: java static-members