作为我目前正在进行的培训计划的一部分,我的任务是开发一个简单的基于命令行的帮助台应用程序。该项目的重点是培养我们使用设计模式、SOLID 原则、MVC 架构等的能力。
我在理解如何保持 MVC 结构的灵活性方面遇到问题。这是我的代码的一部分的示例...
public class RegisterController
{
View view;
RegisterModel registerModel;
public RegisterController()
{
registerModel = new RegisterModel();
}
public void processRegistration(String username, String password, Role role)
{
if(registerModel.isRegisterable(username, password))
{
User newUser = new User(username, password, role);
registerModel.registerUser(newUser);
view = new LoginView(new LoginController());
}
else
{
System.out.println("ERROR during registration.");
view = new MainView(new MainController());
}
view.startView();
}
}
理想情况下,我希望能够在以后进入并用不同的用户界面(视图类)替换它,例如网页,而无需更改我的模型或控制器。但是,目前您可以看到我正在编写命令行“MainView”和“LoginView”类的具体实现。
我怎样才能使这个控制器代码更灵活,并允许用不同的用户界面替换代码修改最少?当更改为不同的 UI 时,期望控制器代码保持不变是不现实的吗?