序
本文次要钻研一下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