实施 Resize/Move/Save 访问者模式

Implement a Resize/Move/Save Visitor Pattern

我正在制作一个绘画程序,我可以制作 Rectangle/Ellipse。在那个程序中,我可以 move/resize 它们,但也可以保存它们。

我现在的问题是我需要制作访客模式(Resize/Move 并保存)但我不知道应该从哪里开始。

这些是我目前使用的方法:

public abstract void ResizeShape(PosSizableRect posSizableRect, float lastX, float lastY, float newX, float newY);
public abstract void MoveShape(int x, int y);
private void Write(List<Shape> shapes, StreamWriter streamWriter, string tabs = "")

抱歉不能给你图片因为我的名誉...

public interface IShape
{
    void Resize(PosSizableRect posSizableRect, float lastX, float lastY, float newX, float newY);
    void Move(int dx, int dy);
    void Write (StreamWriter writer, string tabs ="");
    void AcceptVisitor(IVisitor visitor);
}

public interface IVisitor
{
    void Visit(IShape shape);
}

这就是接口,现在是实现(一个示例)

public class MoveVisitor : IVisitor
{
    private int dx;
    private int dy;

    public MoveVisitor(int dx, int dy)
    {
         this.dx = dx;
         this.dy = dy;
    }
    public void Visit(IShape shape)
    {
         shape.Move(dx,dy);
    }
}