微信加好友功能的实现:Java示例

引言

在现代社交应用中,添加好友是一个常见的功能。以微信为例,用户可以发送好友请求,接收请求,接受或拒绝这些请求。本文将通过一个简化的Java示例,来展示如何实现微信的加好友功能,并附上序列图和关系图以便于理解。

系统设计

在我们实现这个功能之前,我们需要先设计一下系统。我们将会有以下几个主要实体:

  1. User - 用户对象,包含基本信息。
  2. FriendRequest - 好友请求对象,记录请求信息。
  3. Friendship - 好友关系对象,表示两个用户之间的关系。

关系图

我们用mermaid语法来表示实体之间的关系:

erDiagram
    User {
        String id
        String name
    }
    FriendRequest {
        String id
        String fromUserId
        String toUserId
        String status
    }
    Friendship {
        String user1Id
        String user2Id
    }
    
    User ||--o{ FriendRequest : sends
    User ||--o{ FriendRequest : receives
    User ||--o{ Friendship : has
    Friendship ||--o{ User : connects

Java代码示例

下面是一个简单的Java实现,用于模拟微信的加好友功能。

1. User类

public class User {
    private String id;
    private String name;

    public User(String id, String name) {
        this.id = id;
        this.name = name;
    }

    public String getId() {
        return id;
    }

    public String getName() {
        return name;
    }
}

2. FriendRequest类

public class FriendRequest {
    private String id;
    private String fromUserId;
    private String toUserId;
    private String status; // "Pending", "Accepted", "Rejected"

    public FriendRequest(String id, String fromUserId, String toUserId) {
        this.id = id;
        this.fromUserId = fromUserId;
        this.toUserId = toUserId;
        this.status = "Pending";
    }

    public void accept() {
        this.status = "Accepted";
    }

    public void reject() {
        this.status = "Rejected";
    }

    public String getStatus() {
        return status;
    }
}

3. Friendship类

import java.util.HashSet;
import java.util.Set;

public class Friendship {
    private String user1Id;
    private String user2Id;

    public Friendship(String user1Id, String user2Id) {
        this.user1Id = user1Id;
        this.user2Id = user2Id;
    }
}

4. 加好友流程

下面是加好友的主要流程,包括发送好友请求、接受请求和建立朋友关系。

import java.util.ArrayList;
import java.util.List;

public class FriendManager {
    private List<FriendRequest> friendRequests = new ArrayList<>();
    private List<Friendship> friendships = new ArrayList<>();

    public void sendFriendRequest(User from, User to) {
        FriendRequest request = new FriendRequest(String.valueOf(friendRequests.size() + 1), from.getId(), to.getId());
        friendRequests.add(request);
        System.out.println(from.getName() + " sent a friend request to " + to.getName());
    }

    public void respondToFriendRequest(FriendRequest request, boolean accept) {
        if (accept) {
            request.accept();
            friendships.add(new Friendship(request.fromUserId, request.toUserId));
            System.out.println("Friend request accepted.");
        } else {
            request.reject();
            System.out.println("Friend request rejected.");
        }
    }
}

5. 使用示例

最后,我们来看看如何使用这些类来实现加好友功能。

public class Main {
    public static void main(String[] args) {
        User user1 = new User("1", "Alice");
        User user2 = new User("2", "Bob");

        FriendManager friendManager = new FriendManager();
        friendManager.sendFriendRequest(user1, user2);

        // 假设Bob查看并接受好友请求
        FriendRequest request = new FriendRequest("1", "1", "2");
        friendManager.respondToFriendRequest(request, true);
    }
}

序列图

mermaid语法表示加好友的序列图如下:

sequenceDiagram
    participant Alice as Alice
    participant Bob as Bob
    participant FM as FriendManager
    
    Alice->>FM: sendFriendRequest(Bob)
    FM->>Bob: Notify of request
    Bob->>FM: acceptFriendRequest(request)
    FM-->>Alice: Notify acceptance

结论

本文简要介绍了如何在Java中实现类似于微信的加好友功能。我们通过简单的类和方法模拟了发送好友请求、响应请求和建立朋友关系的流程。通过序列图和关系图,您可以更清晰地理解各个环节之间的关系。希望这个示例能为您在社交应用的开发过程中提供一些思路和帮助。