Java站内信业务的设计

本文将介绍如何设计和实现一个简单的Java站内信业务。站内信是指在系统内部发送消息给其他用户的功能,类似于邮件系统。我们将使用Java编程语言和面向对象的设计模式来实现这个功能。

功能需求

我们的站内信业务需要满足以下功能需求:

  1. 用户可以发送站内信给其他用户。
  2. 用户可以查看自己收到的站内信。
  3. 用户可以将站内信标记为已读或未读。
  4. 用户可以删除自己的站内信。

设计思路

我们将使用面向对象的设计思路来实现站内信业务。首先,我们需要定义两个核心的类: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