VBA中的Memento实现

时间:2010-01-18 22:51:30

标签: java .net vba design-patterns memento

我正在寻找Memento模式(GoF)的VBA实现。我正在考虑转换Java版本from Wikipedia。它将用于Excel加载项的撤消/重做功能。

具体来说,我对这条线路有困难:

return new Memento(state);

或者,为了使其更具体,有人可以在VBA中重写:

public Memento saveToMemento() {
    //System.out.println("Originator: Saving to Memento.");
    return new Memento(state);
}

我想要转换的整个代码可以在上面的Wikipedia链接中找到。

由于

1 个答案:

答案 0 :(得分:1)

Java中的return关键字与VBA中的return关键字非常不同。在VBA中,returngosub配对,作为改变过程中执行流程的一种方式。

在Java中,return表示“退出函数”并返回适当类型的值(如示例所示)或不返回任何内容(在void函数的情况下 - Java等价物在VBA中Sub。)

在您的示例中,它将返回类型为Memento的对象。这必须是函数的返回类型或该返回类型的子类型。通过使用new关键字(类似于VBA中的new关键字)创建新对象。名为state的对象作为参数传递给新对象的构造函数。

在VBA中你可以这样写:

Function saveToMemento(state As String) As Variant

saveToMemento = createMemento(state)

End Function

其中createMemento是您编写的用于创建适当结构以保存纪念品信息的函数