实现调整大小/移动/保存访问者模式

普克拉斯

我正在制作一个绘画程序,可以在其中绘制矩形/椭圆形。在该程序中,我可以移动/调整大小,但也可以保存它们。

我的问题是,现在我需要制作一个访客模式(调整大小/移动并保存),但是我不知道应该从哪里开始。

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

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 = "")

抱歉,由于我的声誉而无法给您照片...

弗洛里安·施密丁格(Florian Schmidinger)
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);
    }
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

实现C ++访问者模式,避免循环依赖

来自分类Dev

自定义访问者模式实现

来自分类Dev

OCaml访问者模式

来自分类Dev

当访问者放大或缩小时,如何让我的内容自动调整大小?

来自分类Dev

python中的访问者模式

来自分类Dev

PHP中的访问者模式

来自分类Dev

专为访问者模式进行循环?

来自分类Dev

来自基类的访问者模式

来自分类Dev

访问者模式:访问相同结构的不同方式

来自分类Dev

内部错误:访问者类型未知或未实现:9

来自分类Dev

访问者设计模式中的方法命名

来自分类Dev

使用访问者模式时如何引用子结果?

来自分类Dev

重载方法分派,没有访问者模式

来自分类Dev

使用多态递归模块创建访问者模式

来自分类Dev

C ++访问者模式和多态性

来自分类Dev

仅标题环境中C ++中的访问者模式

来自分类Dev

重载方法分派,无访问者模式

来自分类Dev

使用多态递归模块创建访问者模式

来自分类Dev

在访问者模式中检索类模板的类型

来自分类Dev

不应该重构访问者模式吗?

来自分类Dev

使用访问者模式检查派生类类型?

来自分类Dev

访问者模式:基于输入的数字算术

来自分类Dev

访问者模式VS迭代器模式:跨层次结构类访问吗?

来自分类Dev

刷新访问者的缓存

来自分类Dev

在Rails中为桌面和移动访问者提供单独的js代码

来自分类Dev

在Rails中为桌面和移动访问者提供单独的js代码

来自分类Dev

访问者模式和编译器代码生成,如何处理分配?

来自分类Dev

是否在已知类型的地方跳过“接受”,这是对访问者模式的有效优化?

来自分类Dev

QVariant的访问者模式(无需手动类型测试和转换)

Related 相关文章

热门标签

归档