객체지향을 구현하기 위해 지켜야하는 5가지 원칙.
Single Response Principle : 객체는 한가지의 책임만 가져야 한다. 높은 응집도와 낮은 결합도 고고
Open Closed Principle : 코드 변경에는 닫혀있고 확장에는 열려 있는 방향으로 코드를 작성해야 함. 캡슐화를 통해 Closed하고 확장할 수 있도록 인터페이스로 추상화해서 관리하기. 여기서 확장가능하다는 건 결국 추상화된 걸 상속받아서 오버라이드만 하면 빠르게 규격에 맞게 확장익 가능함.
Liskov Substitution Principle : 자식은 부모의 기능을 상속받아 사용할 수 있다
인터페이스 분리 법칙 : 인터페이스 단일 책임 원칙이라고 보면 됨. 인터페이스는 많이 쪼개면 좋다
의존성 역전 법칙 : 의존성 관계는 추상화된 것으로 받는게 더 의존성 줄이고 테스트 더 용이하게 해준다
https://myjamong.tistory.com/150
정보은닉을 해서 기존의 객체를 사용하는 다른 객체가 이를 변화시키지 못하게 하는 방법임
우선 캡슐화를 위해 접근 제어(public private protected)를 이용하고 메소드로 내부 변수를 통제한다
Event가 생겼을 때 이를 감지하고 소비하는 방향으로 프로그래밍하는 방식임. 기본적으로 Event 핸들러(consumer)가 이벤트 에미터에 의존성을 가지지 않아도 되서 MSA에서 자주 사용하는 방식임. 또한 자연스럽게 클라이언트는 이벤트를 보내고 서버의 응답과 무관하게 다른 일들을 할 수 있기에 비동기 처리가 가능해지고 추상화를 통한 확장이 용이해짐. 의존성이 사라진다는게 짱짱인듯 다만 이를 중재하는 채널에 강하게 의존하게 되어 이게 터지면 말짱 꽝임.
종류는 크게 2가지로 이벤트 리스너 방식과 이벤트 큐 방식이 있다.