查询命令分离其他模式

Posted zhuxudong

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了查询命令分离其他模式相关的知识,希望对你有一定的参考价值。

查询命令分离

public class CQRS {
    /**
     * Command Query Responsibility Segregation【命令查询职责分离】:
     *  查询操作是幂等的,可以放心使用;但是使用命令操作时需要加倍小心。
     *  CQRS 一般和Event Sourcing【事件溯源】一起在 Domain Driven Design【领域驱动设计】中使用。
     */
    @Test
    public void all() {
        final UserCommand userCommand = new UserCommandImpl();
        userCommand.add(new User("zxd", 1));
        userCommand.add(new User("kristy", 2));

        final UserQuery userQuery = new UserQueryImpl();
        final User user = userQuery.getByName("zxd");
        assertNotNull(user);

        userCommand.update(new User("zxd", 3));
        userCommand.delete("zxd");
    }
}
@Data
class User{
    private final String name;
    private final int order;
}

interface UserCommand{
    void add(User user);
    void update(User user);
    void delete(String username);
}
interface UserQuery{
    User getByName(String name);
}
class UserCommandImpl implements UserCommand{
    @Override
    public void add(User user) {
        SharedSource.USERS.putIfAbsent(user.getName(), user);
    }

    @Override
    public void update(User user) {
        SharedSource.USERS.putIfAbsent(user.getName(), user);
    }

    @Override
    public void delete(String username) {
        SharedSource.USERS.remove(username);
    }
}
class UserQueryImpl implements UserQuery{

    @Override
    public User getByName(String name) {
        return SharedSource.USERS.get(name);
    }

}
interface SharedSource {
    ConcurrentMap<String, User> USERS = new ConcurrentHashMap<>();
}

以上是关于查询命令分离其他模式的主要内容,如果未能解决你的问题,请参考以下文章

浅谈命令查询职责分离(CQRS)模式

浅谈命令查询职责分离(CQRS)模式

命令查询职责分离模式CQRS

命令查询职责分离模式(Command Query Responsibility Segregation,CQRS)

命令和查询责任分离 (CQRS) 模式

危险!水很深,让叔来 —— 谈谈命令查询权责分离模式(CQRS)