在多个视图之间共享扫描仪

问题描述 投票:0回答:0

我目前正在尝试实现基于终端的棋盘游戏,但在使用扫描仪读取输入时遇到了一些问题。我有两个独立的控制器,它们有自己的视图,所以基于此,这就是我现在所拥有的。 `

public class ViewOne {
    public String read(){
        Scanner scanner = new Scanner(System.in);
        return scanner.nextLine();
    }
}

public class ViewTwo {
    public String read(){
        Scanner scanner = new Scanner(System.in);
        return scanner.nextLine();
    }
}

这个问题是它创建了多个扫描仪对象并且关闭它们变得困难有没有办法解决这个问题。这是我的潜在解决方案。

public abstract class AbstractView {
    protected static final Scanner scanner = new Scanner(System.in);
    
    public void close(){
         scanner.close();
    }

}
public class ViewOne extends AbstractView {
    public String read(){
        scanner = new Scanner(System.in);
        return scanner.nextLine();
    }
}

public class ViewTwo extends AbstractView {
    public String read(){
        scanner = new Scanner(System.in);
        return scanner.nextLine();
    }
}

这将消除控制器创建 Scanner 对象的责任,并允许其他视图在将来替换当前视图。

我也考虑过实例化 Scanner 并将其传递下去,但我觉得这与其他职责冲突。s

oop model-view-controller design-patterns solid-principles
© www.soinside.com 2019 - 2024. All rights reserved.