本文次要钻研一下cheddar的DomainEvent

DomainEvent

Cheddar/cheddar/cheddar-domain/src/main/java/com/clicktravel/cheddar/domain/event/DomainEvent.java

public interface DomainEvent extends Event {}
DomainEvent接口继承了Event接口

AbstractDomainEvent

Cheddar/cheddar/cheddar-domain/src/main/java/com/clicktravel/cheddar/domain/event/AbstractDomainEvent.java

public abstract class AbstractDomainEvent extends AbstractEvent implements DomainEvent {    public abstract String context();    @Override    public final String type() {        return context() + "." + getClass().getSimpleName();    }}
AbstractDomainEvent继承了AbstractEvent,申明实现了DomainEvent接口,它申明了一个形象的context办法

DomainEventHandler

Cheddar/cheddar/cheddar-domain/src/main/java/com/clicktravel/cheddar/domain/event/DomainEventHandler.java

public interface DomainEventHandler extends EventHandler<DomainEvent> {}public interface HighPriorityDomainEventHandler extends DomainEventHandler {}public interface LowPriorityDomainEventHandler extends DomainEventHandler {}
DomainEventHandler接口继承了EventHandler接口,其泛型为DomainEvent;HighPriorityDomainEventHandler及LowPriorityDomainEventHandler接口继承了DomainEventHandler接口

DomainEventPublisher

Cheddar/cheddar/cheddar-domain/src/main/java/com/clicktravel/cheddar/domain/event/DomainEventPublisher.java

public class DomainEventPublisher extends EventPublisher<DomainEvent> {    private static DomainEventPublisher instance;    public static void init(final MessagePublisher<TypedMessage> messagePublisher) {        instance = new DomainEventPublisher(messagePublisher);    }    private DomainEventPublisher(final MessagePublisher<TypedMessage> messagePublisher) {        super(messagePublisher);    }    public static DomainEventPublisher instance() {        if (instance == null) {            throw new IllegalStateException("DomainEventPublisher not initialized");        }        return instance;    }}
DomainEventPublisher继承了EventPublisher,其结构器接管MessagePublisher;它提供了init办法用于创立DomainEventPublisher,instance办法用于获取instance

小结

cheddar定义了DomainEvent接口及AbstractDomainEvent抽象类;DomainEventHandler接口继承了EventHandler接口,其泛型为DomainEvent;DomainEventPublisher继承了EventPublisher,其结构器接管MessagePublisher,其publishEvent办法最初通过MessagePublisher的publish来实现。

doc

  • Cheddar