简单的项目使用MVC框架,并结合了工厂模式、单例模式和观察者模式和状态模式的代码和说明
时间: 2023-08-13 14:04:26 浏览: 48
以下是一个简单的项目代码演示,使用了MVC框架,并结合了工厂模式、单例模式、观察者模式和状态模式:
Model代码:
```java
public class UserModel {
private String username;
private String password;
private String email;
public UserModel(String username, String password, String email) {
this.username = username;
this.password = password;
this.email = email;
}
// getter和setter方法省略
// 数据库操作
public void save() {
System.out.println("保存用户信息到数据库中");
}
}
```
View代码:
```java
public class UserView {
public void displayUserDetails(String username, String email) {
System.out.println("用户名:" + username);
System.out.println("邮箱:" + email);
}
public String getUsername() {
Scanner scanner = new Scanner(System.in);
System.out.print("请输入用户名:");
return scanner.nextLine();
}
public String getPassword() {
Scanner scanner = new Scanner(System.in);
System.out.print("请输入密码:");
return scanner.nextLine();
}
public String getEmail() {
Scanner scanner = new Scanner(System.in);
System.out.print("请输入邮箱:");
return scanner.nextLine();
}
}
```
Controller代码:
```java
public class UserController {
private UserModel userModel;
private UserView userView;
public UserController(UserModel userModel, UserView userView) {
this.userModel = userModel;
this.userView = userView;
}
public void saveUser() {
String username = userView.getUsername();
String password = userView.getPassword();
String email = userView.getEmail();
// 创建用户模型
userModel = UserModelFactory.createUserModel(username, password, email);
// 保存用户信息
userModel.save();
// 显示用户信息
userView.displayUserDetails(userModel.getUsername(), userModel.getEmail());
}
}
```
工厂模式代码:
```java
public class UserModelFactory {
private static UserModel userModel;
// 单例模式,保证只有一个UserModel实例
public static UserModel createUserModel(String username, String password, String email) {
if (userModel == null) {
userModel = new UserModel(username, password, email);
}
return userModel;
}
}
```
观察者模式代码:
```java
public interface Observer {
void update(String message);
}
public interface Subject {
void addObserver(Observer observer);
void removeObserver(Observer observer);
void notifyObservers(String message);
}
public class UserModel implements Subject {
// 省略其他代码
private List<Observer> observers = new ArrayList<>();
@Override
public void addObserver(Observer observer) {
observers.add(observer);
}
@Override
public void removeObserver(Observer observer) {
observers.remove(observer);
}
@Override
public void notifyObservers(String message) {
for (Observer observer : observers) {
observer.update(message);
}
}
// 省略其他代码
}
```
状态模式代码:
```java
public interface State {
void handle();
}
public class LoginState implements State {
@Override
public void handle() {
System.out.println("用户已登录");
}
}
public class LogoutState implements State {
@Override
public void handle() {
System.out.println("用户未登录");
}
}
public class UserController {
// 省略其他代码
public void login() {
userModel.setState(new LoginState());
userModel.getState().handle();
}
public void logout() {
userModel.setState(new LogoutState());
userModel.getState().handle();
}
// 省略其他代码
}
```
以上代码演示了MVC框架、工厂模式、单例模式、观察者模式和状态模式的使用。其中,MVC框架将应用程序分为模型、视图和控制器三个部分,使得应用程序更易于维护和扩展。工厂模式用于创建UserModel实例,单例模式用于保证只有一个UserModel实例。观察者模式用于在用户信息发生变化时通知观察者,状态模式用于表示用户的登录状态。