摘要状态模式的吸气剂无法在Memento模式中访问

时间:2016-01-09 15:28:01

标签: state memento

我在将状态抽象方法中的一些变量保存到Memento模式中的文件时遇到问题。该错误在范围内无法访问。

以下是代码:

州级。

public abstract class State 
{
    protected int W;


    public int getW() 
    {
        return W;
    }

    public void setW(int w)
    {
        W = w;
    }
}

Memento课程。

public class Memento  {
    private int w, h;
    private double health;
    private FileWriterUtil fileWriter = new FileWriterUtil("data.txt");
    private FileWriterCaretaker caretaker = new FileWriterCaretaker();

        public void Save() {
        //here is the error in two lines under.
        w = state.State.this.getW();
        h = state.State.this.getH();

        String strI = Integer.toString(w);
        String strII = Integer.toString(h);
        String str = strI+strII;

        fileWriter.write(str);
        caretaker.save(fileWriter);
        }
}

我知道它不应该起作用,但如何解决呢?

1 个答案:

答案 0 :(得分:0)

你至少有三个问题。

首先,您需要在Momento类中的某个位置构造State类的实例,可能是构造函数中的成员吗?我不知道你想要完成什么。

其次,State是抽象的,因此您必须定义一个可以实例化的子类。像这样的东西:

class MyState extends State...

并实例化MyState。

第三,State并没有声明一个getH()方法。你怎么称呼那个?

哦,还有一件事:

state.State.this

你使用"这个"看起来不对。

相关问题