searchusermenu
  • 发布文章
  • 消息中心
点赞
收藏
评论
分享
原创

支撑多业务的用户中心设计

2024-12-12 09:10:57
1
0
一、设计方案

 

  1. 抽象工厂模式部分
    • 创建一个抽象工厂接口 UserCenterFactory,该接口定义创建不同类型用户相关对象的方法,例如 createUserServicecreateUserRepository 等。
    • 针对公有云、混合云、私有云分别创建具体的工厂类实现 UserCenterFactory 接口,如 PublicCloudUserCenterFactoryHybridCloudUserCenterFactoryPrivateCloudUserCenterFactory。这些具体工厂类负责创建对应云环境下特定的用户服务、用户数据存储等对象。
  2. 策略模式部分
    • 定义一个抽象的用户操作策略接口 UserOperationStrategy,包含如 registerUserauthenticateUsergetUserDetails 等方法,这些方法代表了不同的用户操作行为。
    • 针对每种云环境下的用户模式,创建具体的策略类实现 UserOperationStrategy 接口,例如 PublicCloudUserOperationStrategyHybridCloudUserOperationStrategyPrivateCloudUserOperationStrategy。这些策略类实现了各自云环境下特定的用户操作逻辑,比如公有云可能使用特定的身份验证服务,私有云可能有不同的用户注册流程等。
  3. 共用与独立逻辑处理
    • 对于共用的部分,例如用户基本信息的存储结构、一些通用的密码加密算法等,可以提取到独立的基础类或工具类中,供不同云环境下的用户中心模块使用。
    • 独立逻辑则在各自的具体工厂类和策略类中实现,例如不同云环境下的用户数据存储位置和方式、与特定云服务的集成逻辑等。

 

二、演示代码示例
// 用户操作策略接口
interface UserOperationStrategy {
    void registerUser(User user);
    boolean authenticateUser(String username, String password);
    User getUserDetails(String username);
}

// 公有云用户操作策略
class PublicCloudUserOperationStrategy implements UserOperationStrategy {
    @Override
    public void registerUser(User user) {
        // 公有云注册逻辑,可能调用公有云特定 API
        System.out.println("Registering user in public cloud: " + user.getUsername());
    }

    @Override
    public boolean authenticateUser(String username, String password) {
        // 公有云认证逻辑,可能使用公有云认证服务
        System.out.println("Authenticating user in public cloud: " + username);
        return true;
    }

    @Override
    public User getUserDetails(String username) {
        // 获取公有云用户详细信息逻辑
        User user = new User();
        user.setUsername(username);
        user.setEmail("public@example.com");
        return user;
    }
}

// 混合云用户操作策略
class HybridCloudUserOperationStrategy implements UserOperationStrategy {
    @Override
    public void registerUser(User user) {
        // 混合云注册逻辑
        System.out.println("Registering user in hybrid cloud: " + user.getUsername());
    }

    @Override
    public boolean authenticateUser(String username, String password) {
        // 混合云认证逻辑
        System.out.println("Authenticating user in hybrid cloud: " + username);
        return true;
    }

    @Override
    public User getUserDetails(String username) {
        // 获取混合云用户详细信息逻辑
        User user = new User();
        user.setUsername(username);
        user.setEmail("hybrid@example.com");
        return user;
    }
}

// 私有云用户操作策略
class PrivateCloudUserOperationStrategy implements UserOperationStrategy {
    @Override
    public void registerUser(User user) {
        // 私有云注册逻辑
        System.out.println("Registering user in private cloud: " + user.getUsername());
    }

    @Override
    public boolean authenticateUser(String username, String password) {
        // 私有云认证逻辑
        System.out.println("Authenticating user in private cloud: " + username);
        return true;
    }

    @Override
    public User getUserDetails(String username) {
        // 获取私有云用户详细信息逻辑
        User user = new User();
        user.setUsername(username);
        user.setEmail("private@example.com");
        return user;
    }
}

// 用户中心工厂接口
interface UserCenterFactory {
    UserOperationStrategy createUserOperationStrategy();
    UserRepository createUserRepository();
}

// 公有云用户中心工厂
class PublicCloudUserCenterFactory implements UserCenterFactory {
    @Override
    public UserOperationStrategy createUserOperationStrategy() {
        return new PublicCloudUserOperationStrategy();
    }

    @Override
    public UserRepository createUserRepository() {
        // 返回公有云特定的用户数据存储对象
        return new PublicCloudUserRepository();
    }
}

// 混合云用户中心工厂
class HybridCloudUserCenterFactory implements UserCenterFactory {
    @Override
    public UserOperationStrategy createUserOperationStrategy() {
        return new HybridCloudUserOperationStrategy();
    }

    @Override
    public UserRepository createUserRepository() {
        // 返回混合云特定的用户数据存储对象
        return new HybridCloudUserRepository();
    }
}

// 私有云用户中心工厂
class PrivateCloudUserCenterFactory implements UserCenterFactory {
    @Override
    public UserOperationStrategy createUserOperationStrategy() {
        return new PrivateCloudUserOperationStrategy();
    }

    @Override
    public UserRepository createUserRepository() {
        // 返回私有云特定的用户数据存储对象
        return new PrivateCloudUserRepository();
    }
}

// 用户数据存储接口
interface UserRepository {
    void saveUser(User user);
    User getUserById(int id);
}

// 公有云用户数据存储实现
class PublicCloudUserRepository implements UserRepository {
    @Override
    public void saveUser(User user) {
        // 公有云存储用户数据逻辑
        System.out.println("Saving user in public cloud: " + user.getUsername());
    }

    @Override
    public User getUserById(int id) {
        // 获取公有云用户数据逻辑
        User user = new User();
        user.setId(id);
        user.setUsername("public_user_" + id);
        user.setEmail("public@example.com");
        return user;
    }
}

// 混合云用户数据存储实现
class HybridCloudUserRepository implements UserRepository {
    @Override
    public void saveUser(User user) {
        // 混合云存储用户数据逻辑
        System.out.println("Saving user in hybrid cloud: " " + user.getUsername());
    }

    @Override
    public User getUserById(int id) {
        // 获取混合云用户数据逻辑
        User user = new User();
        user.setId(id);
        user.setUsername("hybrid_user_" + id);
        user.setEmail("hybrid@example.com");
        return user;
    }
}

// 私有云用户数据存储实现
class PrivateCloudUserRepository implements UserRepository {
    @Override

    public void saveUser(User user) {
        // 私有云存储用户数据逻辑
        System.out.println("Saving user in private cloud: " + user.getUsername());
    }

    @Override
    public User getUserById(int id) {
        // 获取私有云用户数据逻辑
        User user = new User();
        user.setId(id);
        user.setUsername("private_user_" + id);
        user.setEmail("private@example.com");
        return user;
    }
}

// 用户类
class User {
    private int id;
    private String username;
    private String email;

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getUsername() {
        return username;
    }

    public void setUsername(String username) {
        this.username = username;
    }

    public String getEmail() {
        return email;
    }

    public void setEmail(String email) {
        this.email = email;
    }
}

public class Main {
    public static void main(String[] args) {
        // 使用公有云用户中心
        UserCenterFactory publicCloudFactory = new PublicCloudUserCenterFactory();
        UserOperationStrategy publicCloudStrategy = publicCloudFactory.createUserOperationStrategy();
        UserRepository publicCloudRepository = publicCloudFactory.createUserRepository();

        User user = new User();
        user.setUsername("public_user");
        publicCloudStrategy.registerUser(user);
        publicCloudRepository.saveUser(user);

        // 使用混合云用户中心
        UserCenterFactory hybridCloudFactory = new HybridCloudUserCenterFactory();
        UserOperationStrategy hybridCloudStrategy = hybridCloudFactory.createUserOperationStrategy();
        UserRepository hybridCloudRepository = hybridCloudFactory.createUserRepository();

        User user2 = new User();
        user2.setUsername("hybrid_user");
        hybridCloudStrategy.registerUser(user2);
        hybridCloudRepository.saveUser(user2);

        // 使用私有云用户中心
        UserCenterFactory privateCloudFactory = new PrivateCloudUserCenterFactory();
        UserOperationStrategy privateCloudStrategy = privateCloudFactory.createUserOperationStrategy();
        UserRepository privateCloudRepository = privateCloudFactory.createUserRepository();

        User user3 = new User();
        user3.setUsername("private_user");
        privateCloudStrategy.registerUser(user3);
        privateCloudRepository.saveUser(user3);
    }
}
0条评论
作者已关闭评论
c****k
4文章数
0粉丝数
c****k
4 文章 | 0 粉丝
c****k
4文章数
0粉丝数
c****k
4 文章 | 0 粉丝
原创

支撑多业务的用户中心设计

2024-12-12 09:10:57
1
0
一、设计方案

 

  1. 抽象工厂模式部分
    • 创建一个抽象工厂接口 UserCenterFactory,该接口定义创建不同类型用户相关对象的方法,例如 createUserServicecreateUserRepository 等。
    • 针对公有云、混合云、私有云分别创建具体的工厂类实现 UserCenterFactory 接口,如 PublicCloudUserCenterFactoryHybridCloudUserCenterFactoryPrivateCloudUserCenterFactory。这些具体工厂类负责创建对应云环境下特定的用户服务、用户数据存储等对象。
  2. 策略模式部分
    • 定义一个抽象的用户操作策略接口 UserOperationStrategy,包含如 registerUserauthenticateUsergetUserDetails 等方法,这些方法代表了不同的用户操作行为。
    • 针对每种云环境下的用户模式,创建具体的策略类实现 UserOperationStrategy 接口,例如 PublicCloudUserOperationStrategyHybridCloudUserOperationStrategyPrivateCloudUserOperationStrategy。这些策略类实现了各自云环境下特定的用户操作逻辑,比如公有云可能使用特定的身份验证服务,私有云可能有不同的用户注册流程等。
  3. 共用与独立逻辑处理
    • 对于共用的部分,例如用户基本信息的存储结构、一些通用的密码加密算法等,可以提取到独立的基础类或工具类中,供不同云环境下的用户中心模块使用。
    • 独立逻辑则在各自的具体工厂类和策略类中实现,例如不同云环境下的用户数据存储位置和方式、与特定云服务的集成逻辑等。

 

二、演示代码示例
// 用户操作策略接口
interface UserOperationStrategy {
    void registerUser(User user);
    boolean authenticateUser(String username, String password);
    User getUserDetails(String username);
}

// 公有云用户操作策略
class PublicCloudUserOperationStrategy implements UserOperationStrategy {
    @Override
    public void registerUser(User user) {
        // 公有云注册逻辑,可能调用公有云特定 API
        System.out.println("Registering user in public cloud: " + user.getUsername());
    }

    @Override
    public boolean authenticateUser(String username, String password) {
        // 公有云认证逻辑,可能使用公有云认证服务
        System.out.println("Authenticating user in public cloud: " + username);
        return true;
    }

    @Override
    public User getUserDetails(String username) {
        // 获取公有云用户详细信息逻辑
        User user = new User();
        user.setUsername(username);
        user.setEmail("public@example.com");
        return user;
    }
}

// 混合云用户操作策略
class HybridCloudUserOperationStrategy implements UserOperationStrategy {
    @Override
    public void registerUser(User user) {
        // 混合云注册逻辑
        System.out.println("Registering user in hybrid cloud: " + user.getUsername());
    }

    @Override
    public boolean authenticateUser(String username, String password) {
        // 混合云认证逻辑
        System.out.println("Authenticating user in hybrid cloud: " + username);
        return true;
    }

    @Override
    public User getUserDetails(String username) {
        // 获取混合云用户详细信息逻辑
        User user = new User();
        user.setUsername(username);
        user.setEmail("hybrid@example.com");
        return user;
    }
}

// 私有云用户操作策略
class PrivateCloudUserOperationStrategy implements UserOperationStrategy {
    @Override
    public void registerUser(User user) {
        // 私有云注册逻辑
        System.out.println("Registering user in private cloud: " + user.getUsername());
    }

    @Override
    public boolean authenticateUser(String username, String password) {
        // 私有云认证逻辑
        System.out.println("Authenticating user in private cloud: " + username);
        return true;
    }

    @Override
    public User getUserDetails(String username) {
        // 获取私有云用户详细信息逻辑
        User user = new User();
        user.setUsername(username);
        user.setEmail("private@example.com");
        return user;
    }
}

// 用户中心工厂接口
interface UserCenterFactory {
    UserOperationStrategy createUserOperationStrategy();
    UserRepository createUserRepository();
}

// 公有云用户中心工厂
class PublicCloudUserCenterFactory implements UserCenterFactory {
    @Override
    public UserOperationStrategy createUserOperationStrategy() {
        return new PublicCloudUserOperationStrategy();
    }

    @Override
    public UserRepository createUserRepository() {
        // 返回公有云特定的用户数据存储对象
        return new PublicCloudUserRepository();
    }
}

// 混合云用户中心工厂
class HybridCloudUserCenterFactory implements UserCenterFactory {
    @Override
    public UserOperationStrategy createUserOperationStrategy() {
        return new HybridCloudUserOperationStrategy();
    }

    @Override
    public UserRepository createUserRepository() {
        // 返回混合云特定的用户数据存储对象
        return new HybridCloudUserRepository();
    }
}

// 私有云用户中心工厂
class PrivateCloudUserCenterFactory implements UserCenterFactory {
    @Override
    public UserOperationStrategy createUserOperationStrategy() {
        return new PrivateCloudUserOperationStrategy();
    }

    @Override
    public UserRepository createUserRepository() {
        // 返回私有云特定的用户数据存储对象
        return new PrivateCloudUserRepository();
    }
}

// 用户数据存储接口
interface UserRepository {
    void saveUser(User user);
    User getUserById(int id);
}

// 公有云用户数据存储实现
class PublicCloudUserRepository implements UserRepository {
    @Override
    public void saveUser(User user) {
        // 公有云存储用户数据逻辑
        System.out.println("Saving user in public cloud: " + user.getUsername());
    }

    @Override
    public User getUserById(int id) {
        // 获取公有云用户数据逻辑
        User user = new User();
        user.setId(id);
        user.setUsername("public_user_" + id);
        user.setEmail("public@example.com");
        return user;
    }
}

// 混合云用户数据存储实现
class HybridCloudUserRepository implements UserRepository {
    @Override
    public void saveUser(User user) {
        // 混合云存储用户数据逻辑
        System.out.println("Saving user in hybrid cloud: " " + user.getUsername());
    }

    @Override
    public User getUserById(int id) {
        // 获取混合云用户数据逻辑
        User user = new User();
        user.setId(id);
        user.setUsername("hybrid_user_" + id);
        user.setEmail("hybrid@example.com");
        return user;
    }
}

// 私有云用户数据存储实现
class PrivateCloudUserRepository implements UserRepository {
    @Override

    public void saveUser(User user) {
        // 私有云存储用户数据逻辑
        System.out.println("Saving user in private cloud: " + user.getUsername());
    }

    @Override
    public User getUserById(int id) {
        // 获取私有云用户数据逻辑
        User user = new User();
        user.setId(id);
        user.setUsername("private_user_" + id);
        user.setEmail("private@example.com");
        return user;
    }
}

// 用户类
class User {
    private int id;
    private String username;
    private String email;

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getUsername() {
        return username;
    }

    public void setUsername(String username) {
        this.username = username;
    }

    public String getEmail() {
        return email;
    }

    public void setEmail(String email) {
        this.email = email;
    }
}

public class Main {
    public static void main(String[] args) {
        // 使用公有云用户中心
        UserCenterFactory publicCloudFactory = new PublicCloudUserCenterFactory();
        UserOperationStrategy publicCloudStrategy = publicCloudFactory.createUserOperationStrategy();
        UserRepository publicCloudRepository = publicCloudFactory.createUserRepository();

        User user = new User();
        user.setUsername("public_user");
        publicCloudStrategy.registerUser(user);
        publicCloudRepository.saveUser(user);

        // 使用混合云用户中心
        UserCenterFactory hybridCloudFactory = new HybridCloudUserCenterFactory();
        UserOperationStrategy hybridCloudStrategy = hybridCloudFactory.createUserOperationStrategy();
        UserRepository hybridCloudRepository = hybridCloudFactory.createUserRepository();

        User user2 = new User();
        user2.setUsername("hybrid_user");
        hybridCloudStrategy.registerUser(user2);
        hybridCloudRepository.saveUser(user2);

        // 使用私有云用户中心
        UserCenterFactory privateCloudFactory = new PrivateCloudUserCenterFactory();
        UserOperationStrategy privateCloudStrategy = privateCloudFactory.createUserOperationStrategy();
        UserRepository privateCloudRepository = privateCloudFactory.createUserRepository();

        User user3 = new User();
        user3.setUsername("private_user");
        privateCloudStrategy.registerUser(user3);
        privateCloudRepository.saveUser(user3);
    }
}
文章来自个人专栏
账户体系
3 文章 | 1 订阅
0条评论
作者已关闭评论
作者已关闭评论
0
0