관찰자 모드 구현 이벤트 버스 (Google)
                                            
 4436 단어  디자인 모드
                    
public class EventBusFactory {
    private static final EventBus eventBusInstance = new EventBus();
    private EventBusFactory() {
    }
    /**
     *       
     * @return
     */
    public static EventBus getInstance(){
        return eventBusInstance;
    }
    /**
     *        
     * @param object
     */
    public static void register(Object object){
        eventBusInstance.register(object);
    }
    /**
     *          
     * @param object
     */
    public static void unRegister(Object object){
        eventBusInstance.unregister(object);
    }
    /**
     *     
     * @param object
     */
    public static void post(Object object){
        eventBusInstance.post(object);
    }
}
public class OrderEvent {
    private Long orderId;
    private Integer changeType;
    public OrderEvent(Long orderId, Integer changeType) {
        this.orderId = orderId;
        this.changeType = changeType;
    }
    public Long getOrderId() {
        return orderId;
    }
    public void setOrderId(Long orderId) {
        this.orderId = orderId;
    }
    public Integer getChangeType() {
        return changeType;
    }
    public void setChangeType(Integer changeType) {
        this.changeType = changeType;
    }
}
public class OrderMsgObserver {
    @Subscribe
    public void OrderSyncToMq(OrderEvent event) {
        Integer changeType= event.getChangeType();
        Long orderId =  event.getOrderId();
        System.out.println("      MQ-》  Id:"+orderId+"&    :"+changeType);
        String msgInfo="";
        if(changeType ==1){
            msgInfo="this order has been issued";
        }else if(changeType ==2){
            msgInfo ="this order has been finshed";
        }else if(changeType ==0){
            msgInfo="this order has been cancel ";
        }
        writeMq(orderId,msgInfo);
    }
    public static void writeMq(Long orderId,String msgInfo){
        System.out.println("  MQ  -》orderId:"+orderId+"&    "+msgInfo);
    }
}
public class OrderSyncDbObserver {
    @Subscribe
    public void OrderSyncToDb(OrderEvent event) {
       Integer changeType= event.getChangeType();
       Long orderId =  event.getOrderId();
       System.out.println("      -》  Id:"+orderId+"&    :"+changeType);
       String orderInfo="";
        if(changeType ==1){
            orderInfo="The order has been issued";
        }else if(changeType ==2){
            orderInfo ="The order has been finshed";
        }else if(changeType ==0){
            orderInfo="The order has been cancel ";
        }
        writeDb(orderId,orderInfo);
    }
    public static void writeDb(Long orderId,String orderInfo){
       System.out.println("    -》orderId:"+orderId+"&    "+orderInfo);
    }
}
 @Test
    public void testEventBus(){
        OrderSyncDbObserver orderSyncDbObserver =new OrderSyncDbObserver();
        OrderMsgObserver orderMsgObserver =new OrderMsgObserver();
        System.out.println("       ");
        EventBusFactory.getInstance().register(orderSyncDbObserver);
        System.out.println("        ");
        EventBusFactory.getInstance().register(orderMsgObserver);
        Long orderId=1298932323L;
        System.out.println("      -》  Id:"+orderId);
        EventBusFactory.getInstance().post(new OrderEvent(orderId,1));
        System.out.println("      -》  Id:"+orderId);
    }테스트 결 과 는 다음 과 같다.
       
        
      -》  Id:1298932323
      -》  Id:1298932323&    :1
    -》orderId:1298932323&    The order has been issued
      MQ-》  Id:1298932323&    :1
  MQ  -》orderId:1298932323&    this order has been issued
      -》  Id:1298932323이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
디자인 모델 의 공장 모델, 단일 모델자바 는 23 가지 디자인 모델 (프로 그래 밍 사상/프로 그래 밍 방식) 이 있 습 니 다. 공장 모드 하나의 공장 류 를 만들어 같은 인 터 페 이 스 를 실현 한 일부 종 류 를 인 스 턴 스 로 만 드 는 것...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.