유일한 하나의 객체가 필요할떄 사용하는 패턴
주로 서로 자원을 공유할떄에 사용된다(프린터)
220v를 변환기를 통해서 110v에 연결하는 코드
흔히 돼지코 역할을 한다.
-> 서로간에 호환이 불가능한 인터페이스 들을 호환이 가능하게 중간코드를 만들어 준다.
뭔가를 대신해서 처리하는것
내용이 매우 어려움;; Thread나오고 runnable 나오고 처음보는 것들도 나오기 떄문에 클론 코딩만 해봤음(Intellij)
기존 뼈대는 유지하는 와중에 따로 확장이 필요한 경우에 이용된다(상속의 대안)
변화가 일어났을떄 미리 등록된 클래스에 통보를 해주는 패턴
스윙, jwt, 안드로이드 등에서 자주 사용 된다.
사실 그냥 인터페이스를 참조로 받고 new Button()을 통해서 직접 오버라이딩한 clickEvent를 호출하는 방법보다 어떤점이 좋은지 잘 모르겠다.
여러개의 객체과 사용하는 서브객체 사이가 복잡할떄 중각에 객체를 두어서 관리하는 패턴
여러개의 객체를 합쳐서 특정한 기능을 만들떄 사용한다.
3개의 class를 만든뒤 이 3개를 이용하는 main을 작성
하지만 코드가 너무 길고 복잡하기 떄문에 중간에 인터페이스 역할을 해줄 패턴을 적용후 main 작성
유사한 행위들을 캡슐화 해서 전략만을 변경하여 유연하게 확장하는 패턴