신호처리
2026년 4월 22일 09:30분
민수기 10장의 나팔은 신호 체계입니다. 나팔 수와 소리 방식에 따라 다른 명령이 전달됩니다. 나는 신호 코드를 키로, 실행 핸들러를 값으로 등록하는 디스패처를 만들었습니다.
package com.jesusbornd.numbers;
import java.util.HashMap;
import java.util.Map;
import java.util.function.Runnable;
public class Numbers_10_Chapter_Lv2 {
static class TrumpetDispatcher {
private final Map<String, Runnable> handlers = new HashMap<>();
TrumpetDispatcher on(String signal, Runnable handler) {
handlers.put(signal, handler);
return this;
}
void dispatch(String signal) {
Runnable handler = handlers.get(signal);
if (handler != null) {
System.out.println("신호: [" + signal + "]");
handler.run();
} else {
System.out.println("신호: [" + signal + "] → 알 수 없는 신호");
}
}
}
public static void main(String[] args) {
TrumpetDispatcher dispatcher = new TrumpetDispatcher()
.on("BOTH_LONG", () -> System.out.println(" → 회중 소집"))
.on("ONE_LONG", () -> System.out.println(" → 동쪽 진 출발"))
.on("TWO_LONG", () -> System.out.println(" → 남쪽 진 출발"))
.on("ALARM", () -> System.out.println(" → 전쟁/위험 경보"))
.on("FEAST", () -> System.out.println(" → 절기/희생제 시작"));
String[] signals = {"BOTH_LONG", "ALARM", "FEAST", "UNKNOWN"};
for (String s : signals) dispatcher.dispatch(s);
}
}
from typing import Callable
class TrumpetDispatcher:
def __init__(self):
self._handlers: dict[str, Callable[[], None]] = {}
def on(self, signal: str, handler: Callable[[], None]) -> "TrumpetDispatcher":
self._handlers[signal] = handler
return self
def dispatch(self, signal: str):
print(f"신호: [{signal}]")
handler = self._handlers.get(signal)
if handler:
handler()
else:
print(" → 알 수 없는 신호")
if __name__ == "__main__":
dispatcher = (
TrumpetDispatcher()
.on("BOTH_LONG", lambda: print(" → 회중 소집"))
.on("ONE_LONG", lambda: print(" → 동쪽 진 출발"))
.on("TWO_LONG", lambda: print(" → 남쪽 진 출발"))
.on("ALARM", lambda: print(" → 전쟁/위험 경보"))
.on("FEAST", lambda: print(" → 절기/희생제 시작"))
)
for signal in ["BOTH_LONG", "ALARM", "FEAST", "UNKNOWN"]:
dispatcher.dispatch(signal)
Search
Categories
← 목록으로
Comments
나팔 소리 하나로 상황이 전달되는 단순함이 오히려 강력하더라고요.