Java站内信业务的设计
本文将介绍如何设计和实现一个简单的Java站内信业务。站内信是指在系统内部发送消息给其他用户的功能,类似于邮件系统。我们将使用Java编程语言和面向对象的设计模式来实现这个功能。
功能需求
我们的站内信业务需要满足以下功能需求:
- 用户可以发送站内信给其他用户。
- 用户可以查看自己收到的站内信。
- 用户可以将站内信标记为已读或未读。
- 用户可以删除自己的站内信。
设计思路
我们将使用面向对象的设计思路来实现站内信业务。首先,我们需要定义两个核心的类:User(用户)和Message(站内信)。
User类表示系统中的用户,包含用户的基本信息以及用户的收件箱和发件箱。Message类表示站内信,包含站内信的内容、发送者和接收者信息、发送时间等。
此外,我们还需要定义一个MessageService类来处理站内信的业务逻辑,例如发送站内信、查看收件箱、删除站内信等操作。
类图
下面是User、Message和MessageService类的类图:
classDiagram
class User {
- id: int
- username: String
- inbox: List<Message>
- outbox: List<Message>
+ User(id: int, username: String)
+ getId(): int
+ getUsername(): String
+ getInbox(): List<Message>
+ getOutbox(): List<Message>
+ send(message: Message): void
+ markAsRead(message: Message): void
+ delete(message: Message): void
}
class Message {
- id: int
- sender: User
- receiver: User
- content: String
- sentTime: Date
- read: boolean
+ Message(id: int, sender: User, receiver: User, content: String)
+ getId(): int
+ getSender(): User
+ getReceiver(): User
+ getContent(): String
+ getSentTime(): Date
+ isRead(): boolean
+ markAsRead(): void
}
class MessageService {
- users: Map<int, User>
+ getUser(id: int): User
+ sendMessage(senderId: int, receiverId: int, content: String): void
+ getInbox(userId: int): List<Message>
+ getOutbox(userId: int): List<Message>
+ deleteMessage(userId: int, messageId: int): void
}
User "1" -- "n" Message: has
MessageService "1" -- "n" User: has
实现代码
下面是User和Message类的Java实现代码:
public class User {
private int id;
private String username;
private List<Message> inbox;
private List<Message> outbox;
public User(int id, String username) {
this.id = id;
this.username = username;
this.inbox = new ArrayList<>();
this.outbox = new ArrayList<>();
}
public int getId() {
return id;
}
public String getUsername() {
return username;
}
public List<Message> getInbox() {
return inbox;
}
public List<Message> getOutbox() {
return outbox;
}
public void send(Message message) {
outbox.add(message);
message.getReceiver().getInbox().add(message);
}
public void markAsRead(Message message) {
message.markAsRead();
}
public void delete(Message message) {
inbox.remove(message);
outbox.remove(message);
}
}
public class Message {
private int id;
private User sender;
private User receiver;
private String content;
private Date sentTime;
private boolean read;
public Message(int id, User sender, User receiver, String content) {
this.id = id;
this.sender = sender;
this.receiver = receiver;
this.content = content;
this.sentTime = new Date();
this.read = false;
}
public int getId() {
return id;
}
public User getSender() {
return sender;
}
public User getReceiver() {
return receiver;
}
public String getContent() {
return content;
}
public Date getSentTime() {
return sentTime;
}
public boolean isRead() {
return read;
}
public void markAsRead() {
read = true;
}
}
下面是MessageService类的Java实现代码:
public class MessageService {
private Map<Integer, User> users;
public MessageService() {
this.users = new