자바에서 커스텀 이벤트 만들기

만약에 어떤 오브젝트에서 "hello"라고 하면 오브젝트2에서 "hello"하고 대답하는 그런 이벤트를 만들고싶은데 어떻게 하면 좋을지 잘모르겠어요. 간단한 예제 소스가 없을까요?

1답변

  • 좋아요

    0

    싫어요
    채택취소하기

    제 생각엔 옵저버 패턴을 찾는것 같은데요. 옵저버 패턴에 대한 개념은 http://warmz.tistory.com/entry/Observer-Pattern-%EC%98%B5%EC%A0%80%EB%B2%84-%ED%8C%A8%ED%84%B4 여기에 잘 설명되있으니 참고하시면 좋을것 같습니다.

    이건 샘플 코드입니다.

    import java.util.*;
    
    interface HelloListener {
        void someoneSaidHello();
    }
    
    class Initiater {
        private List<HelloListener> listeners = new ArrayList<HelloListener>();
    
        public void addListener(HelloListener toAdd) {
            listeners.add(toAdd);
        }
    
        public void sayHello() {
            System.out.println("Hello!!");
    
            for (HelloListener hl : listeners)
                hl.someoneSaidHello();
        }
    }
    
    class Responder implements HelloListener {
        @Override
        public void someoneSaidHello() {
            System.out.println("Hello there...");
        }
    }
    
    class Test {
        public static void main(String[] args) {
            Initiater initiater = new Initiater();
            Responder responder = new Responder();
    
            initiater.addListener(responder);
    
            initiater.sayHello();  // 누가 "Hello!!"라고 하면 다른 객체들이 "Hello there..."이라고 대답한다. 
        }
    }
    

ᕕ( ᐛ )ᕗ
로그인이 필요합니다

작성한 답변에 다른 개발자들이 댓글을 작성하거나 댓글에 좋아요/싫어요를 할 수 있기 때문에 계정을 필요로 합니다.