<\/p>\n
\uc18c\ud504\ud2b8\uc6e8\uc5b4 \uac1c\ubc1c\uc5d0\uc11c \ub514\uc790\uc778 \ud328\ud134\uc740 \ubb38\uc81c \ud574\uacb0\uc744 \uc704\ud55c \uc7ac\uc0ac\uc6a9 \uac00\ub2a5\ud55c \uc194\ub8e8\uc158\uc744 \uc81c\uacf5\ud569\ub2c8\ub2e4. \uc774\ub7ec\ud55c \ub514\uc790\uc778 \ud328\ud134\uc740 \uac1c\ubc1c\uc790\ub4e4 \uc0ac\uc774\uc5d0\uc11c \uacf5\ud1b5\uc801\uc73c\ub85c \uc0ac\uc6a9\ub418\uba70, \uc774\uc804\uc5d0 \uc874\uc7ac\ud588\ub358 \ubb38\uc81c\uc5d0 \ub300\ud55c \ud6a8\uacfc\uc801\uc778 \ud574\uacb0\ucc45\uc744 \uc81c\uacf5\ud569\ub2c8\ub2e4. \uc774\ubc88 \uae00\uc5d0\uc11c\ub294 \uc790\ubc14 \ub514\uc790\uc778 \ud328\ud134 \uc911 \ud558\ub098\uc778 \uad00\ucc30\uc790 \ud328\ud134\uc744 \uc0b4\ud3b4\ubcf4\uace0, \uc774\ubca4\ud2b8 \uae30\ubc18 \uc2dc\uc2a4\ud15c\uc744 \uad6c\ucd95\ud558\ub294 \ubc29\ubc95\uc5d0 \ub300\ud574 \uc54c\uc544\ubcf4\uaca0\uc2b5\ub2c8\ub2e4.<\/p>\n
\uc790\ubc14 \ub514\uc790\uc778 \ud328\ud134\uc740 \uac1d\uccb4 \uc9c0\ud5a5 \ud504\ub85c\uadf8\ub798\ubc0d\uc5d0\uc11c \uc0ac\uc6a9\ub418\ub294 \uacf5\ud1b5\uc801\uc778 \ubb38\uc81c\uc5d0 \ub300\ud55c \ud574\uacb0\ucc45\uc785\ub2c8\ub2e4. \uc774\ub7ec\ud55c \ud328\ud134\uc740 \uac1c\ubc1c\uc790\ub4e4 \uc0ac\uc774\uc5d0\uc11c \uacf5\uc720\ub429\ub2c8\ub2e4. \ub530\ub77c\uc11c \uc774\ub7ec\ud55c \ud328\ud134\uc740 \uac1c\ubc1c\uc790\ub4e4 \uc0ac\uc774\uc5d0\uc11c \uacf5\ud1b5\uc801\uc73c\ub85c \uc0ac\uc6a9\ub429\ub2c8\ub2e4. \uc790\ubc14 \ub514\uc790\uc778 \ud328\ud134\uc740 \ub2e4\uc74c\uacfc \uac19\uc740 \uc885\ub958\uac00 \uc788\uc2b5\ub2c8\ub2e4.<\/p>\n
\uc774\ubc88 \uae00\uc5d0\uc11c\ub294 \ud589\ub3d9 \ud328\ud134 \uc911 \ud558\ub098\uc778 \uad00\ucc30\uc790 \ud328\ud134\uc744 \uc0b4\ud3b4\ubcf4\uaca0\uc2b5\ub2c8\ub2e4.<\/p>\n
\uad00\ucc30\uc790 \ud328\ud134\uc740 \uac1d\uccb4 \uac04\uc758 \uc77c\ub300\ub2e4 \uc885\uc18d\uc131\uc744 \uc815\uc758\ud558\ub294 \ub514\uc790\uc778 \ud328\ud134\uc785\ub2c8\ub2e4. \uc774 \ud328\ud134\uc740 \uc5b4\ub5a4 \uac1d\uccb4\uc758 \uc0c1\ud0dc\uac00 \ubcc0\uacbd\ub418\uba74 \uc774 \uac1d\uccb4\uc5d0 \uc885\uc18d\ub41c \ub2e4\ub978 \uac1d\uccb4\ub4e4\uc5d0\uac8c \uc54c\ub9ac\ub294 \uae30\ub2a5\uc744 \uc81c\uacf5\ud569\ub2c8\ub2e4. \uc989, \uac1d\uccb4\uac00 \uc0c1\ud0dc\ub97c \ubcc0\uacbd\ud560 \ub54c\ub9c8\ub2e4 \ub2e4\ub978 \uac1d\uccb4\uc5d0\uac8c \uc774\ub97c \uc54c\ub9ac\uace0, \uc774\ub7ec\ud55c \uac1d\uccb4\ub4e4\uc740 \uc774\ubca4\ud2b8\ub97c \ud1b5\ud574 \uc54c\ub9bc\uc744 \ubc1b\uc2b5\ub2c8\ub2e4.<\/p>\n
\uad00\ucc30\uc790 \ud328\ud134\uc740 \ub2e4\uc74c\uacfc \uac19\uc740 \uad6c\uc131 \uc694\uc18c\ub85c \uc774\ub8e8\uc5b4\uc838 \uc788\uc2b5\ub2c8\ub2e4.<\/p>\n
\uad00\ucc30\uc790 \ud328\ud134\uc744 \uad6c\ud604\ud558\ub294 \ubc29\ubc95\uc740 \ub2e4\uc74c\uacfc \uac19\uc2b5\ub2c8\ub2e4.<\/p>\n
public interface Subject {\n void registerObserver(Observer observer);\n void removeObserver(Observer observer);\n void notifyObservers();\n}<\/code><\/pre>\n\n- Observer \uc778\ud130\ud398\uc774\uc2a4\ub97c \uc815\uc758\ud569\ub2c8\ub2e4.<\/li>\n<\/ol>\n
public interface Observer {\n void update();\n}<\/code><\/pre>\n\n- ConcreteSubject \ud074\ub798\uc2a4\ub97c \uc815\uc758\ud569\ub2c8\ub2e4.<\/li>\n<\/ol>\n
public class ConcreteSubject implements Subject {\n private List observers = new ArrayList();\n\n @Override\n public void registerObserver(Observer observer) {\n observers.add(observer);\n }\n\n @Override\n public void removeObserver(Observer observer) {\n observers.remove(observer);\n }\n\n @Override\n public void notifyObservers() {\n for (Observer observer : observers) {\n observer.update();\n }\n }\n}<\/code><\/pre>\n\n- ConcreteObserver \ud074\ub798\uc2a4\ub97c \uc815\uc758\ud569\ub2c8\ub2e4.<\/li>\n<\/ol>\n
public class ConcreteObserver implements Observer {\n private String name;\n private Subject subject;\n\n public ConcreteObserver(String name, Subject subject) {\n this.name = name;\n this.subject = subject;\n this.subject.registerObserver(this);\n }\n\n @Override\n public void update() {\n System.out.println(name + \" has been notified of a change in the subject's state.\");\n }\n}<\/code><\/pre>\n\uc774\ubca4\ud2b8 \uae30\ubc18 \uc2dc\uc2a4\ud15c\uc758 \uad6c\ucd95 \ubc29\ubc95<\/h2>\n
\uc774\ubca4\ud2b8 \uae30\ubc18 \uc2dc\uc2a4\ud15c\uc740 \uad00\ucc30\uc790 \ud328\ud134\uc744 \uc0ac\uc6a9\ud558\uc5ec \uad6c\ud604\ub429\ub2c8\ub2e4. \uc774 \uc2dc\uc2a4\ud15c\uc740 \ub2e4\uc74c\uacfc \uac19\uc740 \uad6c\uc131 \uc694\uc18c\ub85c \uc774\ub8e8\uc5b4\uc838 \uc788\uc2b5\ub2c8\ub2e4.<\/p>\n
\n- \uc774\ubca4\ud2b8: \uc2dc\uc2a4\ud15c\uc5d0\uc11c \ubc1c\uc0dd\ud558\ub294 \uc0c1\ud0dc \ubcc0\uacbd\uc744 \ub098\ud0c0\ub0c5\ub2c8\ub2e4.<\/li>\n
- \uc774\ubca4\ud2b8 \ud578\ub4e4\ub7ec: \uc774\ubca4\ud2b8\uac00 \ubc1c\uc0dd\ud588\uc744 \ub54c \uc2e4\ud589\ub418\ub294 \ucf54\ub4dc\uc785\ub2c8\ub2e4.<\/li>\n
- \uc774\ubca4\ud2b8 \ubc1c\ud589\uc790: \uc774\ubca4\ud2b8\ub97c \ubc1c\uc0dd\uc2dc\ud0a4\ub294 \uac1d\uccb4\uc785\ub2c8\ub2e4.<\/li>\n
- \uc774\ubca4\ud2b8 \ub9ac\uc2a4\ub108: \uc774\ubca4\ud2b8\ub97c \uc218\uc2e0\ud558\ub294 \uac1d\uccb4\uc785\ub2c8\ub2e4.<\/li>\n<\/ul>\n
\uc774\ubca4\ud2b8 \uae30\ubc18 \uc2dc\uc2a4\ud15c\uc744 \uad6c\ud604\ud558\ub294 \ubc29\ubc95\uc740 \ub2e4\uc74c\uacfc \uac19\uc2b5\ub2c8\ub2e4.<\/p>\n
\n- \uc774\ubca4\ud2b8 \ud074\ub798\uc2a4\ub97c \uc815\uc758\ud569\ub2c8\ub2e4.<\/li>\n<\/ol>\n
public class Event {\n private String name;\n\n public Event(String name) {\n this.name = name;\n }\n\n public String getName() {\n return name;\n }\n}<\/code><\/pre>\n\n- \uc774\ubca4\ud2b8 \ud578\ub4e4\ub7ec \uc778\ud130\ud398\uc774\uc2a4\ub97c \uc815\uc758\ud569\ub2c8\ub2e4.<\/li>\n<\/ol>\n
public interface EventHandler {\n void handle(Event event);\n}<\/code><\/pre>\n\n- \uc774\ubca4\ud2b8 \ubc1c\ud589\uc790 \ud074\ub798\uc2a4\ub97c \uc815\uc758\ud569\ub2c8\ub2e4.<\/li>\n<\/ol>\n
public class EventPublisher {\n private List eventHandlers = new ArrayList();\n\n public void registerEventHandler(EventHandler eventHandler) {\n eventHandlers.add(eventHandler);\n }\n\n public void removeEventHandler(EventHandler eventHandler) {\n eventHandlers.remove(eventHandler);\n }\n\n public void publishEvent(Event event) {\n for (EventHandler eventHandler : eventHandlers) {\n eventHandler.handle(event);\n }\n }\n}<\/code><\/pre>\n\n- \uc774\ubca4\ud2b8 \ub9ac\uc2a4\ub108 \ud074\ub798\uc2a4\ub97c \uc815\uc758\ud569\ub2c8\ub2e4.<\/li>\n<\/ol>\n
public class EventListener implements EventHandler {\n private String name;\n\n public EventListener(String name) {\n this.name = name;\n }\n\n @Override\n public void handle(Event event) {\n System.out.println(name + \" has received an event: \" + event.getName());\n }\n}<\/code><\/pre>\n\uc790\ubc14 \ub514\uc790\uc778 \ud328\ud134\uc744 \ud65c\uc6a9\ud55c \uad00\ucc30\uc790 \ud328\ud134\uc758 \uad6c\ud604 \uc608\uc81c<\/h2>\n
\uc774\ubc88\uc5d0\ub294 \uc790\ubc14 \ub514\uc790\uc778 \ud328\ud134\uc744 \ud65c\uc6a9\ud558\uc5ec \uad00\ucc30\uc790 \ud328\ud134\uc744 \uad6c\ud604\ud558\ub294 \uc608\uc81c\ub97c \uc0b4\ud3b4\ubcf4\uaca0\uc2b5\ub2c8\ub2e4. \uc774 \uc608\uc81c\ub294 \uc774\ubca4\ud2b8 \uae30\ubc18 \uc2dc\uc2a4\ud15c\uc744 \uad6c\ucd95\ud558\ub294 \ubc29\ubc95\uc5d0 \ub300\ud55c \uc608\uc81c\uc785\ub2c8\ub2e4.<\/p>\n
\n- \uc774\ubca4\ud2b8 \ud074\ub798\uc2a4\ub97c \uc815\uc758\ud569\ub2c8\ub2e4.<\/li>\n<\/ol>\n
public class Event {\n private String name;\n\n public Event(String name) {\n this.name = name;\n }\n\n public String getName() {\n return name;\n }\n}<\/code><\/pre>\n\n- \uc774\ubca4\ud2b8 \ud578\ub4e4\ub7ec \uc778\ud130\ud398\uc774\uc2a4\ub97c \uc815\uc758\ud569\ub2c8\ub2e4.<\/li>\n<\/ol>\n
public interface EventHandler {\n void handle(Event event);\n}<\/code><\/pre>\n\n- \uc774\ubca4\ud2b8 \ubc1c\ud589\uc790 \ud074\ub798\uc2a4\ub97c \uc815\uc758\ud569\ub2c8\ub2e4.<\/li>\n<\/ol>\n
public class EventPublisher {\n private List eventHandlers = new ArrayList();\n\n public void registerEventHandler(EventHandler eventHandler) {\n eventHandlers.add(eventHandler);\n }\n\n public void removeEventHandler(EventHandler eventHandler) {\n eventHandlers.remove(eventHandler);\n }\n\n public void publishEvent(Event event) {\n for (EventHandler eventHandler : eventHandlers) {\n eventHandler.handle(event);\n }\n }\n}<\/code><\/pre>\n\n- \uc774\ubca4\ud2b8 \ub9ac\uc2a4\ub108 \ud074\ub798\uc2a4\ub97c \uc815\uc758\ud569\ub2c8\ub2e4.<\/li>\n<\/ol>\n
public class EventListener implements EventHandler {\n private String name;\n\n public EventListener(String name) {\n this.name = name;\n }\n\n @Override\n public void handle(Event event) {\n System.out.println(name + \" has received an event: \" + event.getName());\n }\n}<\/code><\/pre>\n\n- \uba54\uc778 \uba54\uc11c\ub4dc\uc5d0\uc11c \uc774\ubca4\ud2b8 \uae30\ubc18 \uc2dc\uc2a4\ud15c\uc744 \uad6c\ud604\ud569\ub2c8\ub2e4.<\/li>\n<\/ol>\n
public static void main(String[] args) {\n EventPublisher eventPublisher = new EventPublisher();\n eventPublisher.registerEventHandler(new EventListener(\"Listener 1\"));\n eventPublisher.registerEventHandler(new EventListener(\"Listener 2\"));\n eventPublisher.publishEvent(new Event(\"Event 1\"));\n eventPublisher.publishEvent(new Event(\"Event 2\"));\n}<\/code><\/pre>\n\uc704 \uc608\uc81c\uc5d0\uc11c\ub294 EventPublisher \ud074\ub798\uc2a4\ub97c \uc0ac\uc6a9\ud558\uc5ec \uc774\ubca4\ud2b8\ub97c \ubc1c\ud589\ud558\uace0, EventListener \ud074\ub798\uc2a4\ub97c \uc0ac\uc6a9\ud558\uc5ec \uc774\ubca4\ud2b8\ub97c \ucc98\ub9ac\ud569\ub2c8\ub2e4. \uc774\ubca4\ud2b8\uac00 \ubc1c\ud589\ub420 \ub54c\ub9c8\ub2e4 EventListener \uac1d\uccb4\ub4e4\uc740 \uc774\ubca4\ud2b8\ub97c \ud578\ub4e4\ub9c1\ud569\ub2c8\ub2e4.<\/p>\n
\uacb0\ub860<\/h2>\n
\uc774\ubc88 \uae00\uc5d0\uc11c\ub294 \uc790\ubc14 \ub514\uc790\uc778 \ud328\ud134 \uc911 \ud558\ub098\uc778 \uad00\ucc30\uc790 \ud328\ud134\uc744 \uc0b4\ud3b4\ubcf4\uc558\uc2b5\ub2c8\ub2e4. \uad00\ucc30\uc790 \ud328\ud134\uc740 \uac1d\uccb4 \uac04\uc758 \uc77c\ub300\ub2e4 \uc885\uc18d\uc131\uc744 \uc815\uc758\ud558\ub294 \ub514\uc790\uc778 \ud328\ud134\uc73c\ub85c, \uac1d\uccb4\uc758 \uc0c1\ud0dc\uac00 \ubcc0\uacbd\ub420 \ub54c \uc774\ub97c \uc54c\ub9ac\ub294 \uae30\ub2a5\uc744 \uc81c\uacf5\ud569\ub2c8\ub2e4. \ub610\ud55c, \uc774\ubca4\ud2b8 \uae30\ubc18 \uc2dc\uc2a4\ud15c\uc744 \uad6c\ud604\ud558\ub294 \ubc29\ubc95\uc5d0 \ub300\ud574\uc11c\ub3c4 \uc0b4\ud3b4\ubcf4\uc558\uc2b5\ub2c8\ub2e4. \uc774\ubca4\ud2b8 \uae30\ubc18 \uc2dc\uc2a4\ud15c\uc740 \uad00\ucc30\uc790 \ud328\ud134\uc744 \uc0ac\uc6a9\ud558\uc5ec \uad6c\ud604\ub429\ub2c8\ub2e4. \uc774\ub7ec\ud55c \ud328\ud134\uc744 \uc0ac\uc6a9\ud558\uc5ec \uac1c\ubc1c\ud558\uba74, \ucf54\ub4dc\uc758 \uc7ac\uc0ac\uc6a9\uc131\uacfc \uc720\uc9c0 \ubcf4\uc218\uc131\uc774 \ud5a5\uc0c1\ub429\ub2c8\ub2e4.<\/p>\n","protected":false},"excerpt":{"rendered":"
\uc790\ubc14 \ub514\uc790\uc778 \ud328\ud134\uc73c\ub85c \uad00\ucc30\uc790 \ud328\ud134 \uad6c\ud604\ud558\uae30: \uc774\ubca4\ud2b8 \uae30\ubc18 \uc2dc\uc2a4\ud15c \uad6c\ucd95<\/p>\n","protected":false},"author":1,"featured_media":33704,"comment_status":"closed","ping_status":"","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[1957],"tags":[2214,2162,2068,2188,471,5925,5979,3414],"class_list":["post-36194","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-development","tag-change","tag-event","tag-handle","tag-public","tag-state","tag-5925","tag-5979","tag-3414"],"acf":[],"_links":{"self":[{"href":"https:\/\/m9js.shop\/blog\/wp-json\/wp\/v2\/posts\/36194","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/m9js.shop\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/m9js.shop\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/m9js.shop\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/m9js.shop\/blog\/wp-json\/wp\/v2\/comments?post=36194"}],"version-history":[{"count":1,"href":"https:\/\/m9js.shop\/blog\/wp-json\/wp\/v2\/posts\/36194\/revisions"}],"predecessor-version":[{"id":36327,"href":"https:\/\/m9js.shop\/blog\/wp-json\/wp\/v2\/posts\/36194\/revisions\/36327"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/m9js.shop\/blog\/wp-json\/wp\/v2\/media\/33704"}],"wp:attachment":[{"href":"https:\/\/m9js.shop\/blog\/wp-json\/wp\/v2\/media?parent=36194"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/m9js.shop\/blog\/wp-json\/wp\/v2\/categories?post=36194"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/m9js.shop\/blog\/wp-json\/wp\/v2\/tags?post=36194"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}