프로그램을 설계할 때 발생했던 문제점들을 객체 간의 등을 이용하여 해결할 수 있도록 하나의 "규약" 형태로 만들어 놓은 것. 또는 해결하기 위해 사용되는 패턴.: 하나의 클래스에 오직 하나의 인스턴스만 가지는 패턴.보통 DB연결 모듈에 많이 사용.장점: 인스턴스를 공유
: 하나의 클래스에 오직 하나의 인스턴스만 가지는 패턴. \*클래스: 붕어빵 틀, 인스턴스: 붕어빵(실체)즉 인스턴스 생성 개수 제한(1개의 인스턴스)지정한 클래스의 인스턴스가 반드시 1개만 존재한다는 것을 보장하고 싶을 때인스턴스가 하나만 존재한다는 것을 프로그램 상
: 메모리 사용량을 줄이기 위해(=경량화) 인스턴스를 공유하는 패턴Keyword : Map, 객체 캐시, 재사용보통 해당 인스턴스의 생성여부를 확인하기 위해 Map 사용Singleton과 관련원래 인스턴스 생성이라면 아래 코드 처럼 진행. 즉 '내'가 직접 만들어서 사
: new 연산자 대신 getInstance()를 사용하는 것. 즉, 내가 인스턴스 생성 시, 직접 만드는 것이 아니라 인스턴스를 만들어주는 메서드를 대신 호출하는 것getInstance()List.of()Arrays.asList()String.valueOf()Temp
: 클래스에서 인스턴스를 만드는(new) 대신 인스턴스를 복사해서 새 인스턴스를 만드는 것. 즉 복사본 반환객체가 복잡할 수도 있고, 초기화하는게 오래 걸릴 수도 있고 새로 만드는게 부담스러울 때. 즉, 인스턴스 생성이 어려운 경우프레임워크와 생성하는 인스턴스를 분리하
반복자(iterator)를 사용하여 컬렉션 요소들에 접근하는 패턴
: Template Method(불변과 가변 분리, 상속) + Strategy(불변에 가변 주입, 포함) 패턴✅ 상속은 강한 결합이고, 위임은 약한 결합 출처: Java언어로 배우는 디자인 패턴 입문: 쉽게 배우는 GoF의 23가지 디자인 패턴
객체의 내부 상태가 변경될 때 해당 객체가 그의 행동을 변경할 수 있도록 하는 패턴.상태는 일반적으로 객체의 상태에 따라 적절한 행동들을 선택하는 많은 조건문(if 또는 switch)으로 구현된다.상태 또는 케이스가 추가될수록 복잡한 조건문에 올바르게 추가하는 것은 쉽
출처: Java언어로 배우는 디자인 패턴 입문: 쉽게 배우는 GoF의 23가지 디자인 패턴✅ Keyword : 재귀, 중첩, 트리(일반적으로 트리 구조로 된 자료구조는 Composite 패턴에 해당)✅ Example : 프로그램 동작 테스트할 때, KeyboardTe
명령의 집합을 저장해두면 같은 명령 재실행 가능여러 명령을 모아서 새로운 명령으로 재이용 가능상속과 포함을 동시에내용물을 변경하지 않고 기능 추가 가능ex1) notifier(알림자) - 알림 객체(중심 객체)페이스북 notifier인스타 notifier문자 notif
객체의 상태가 달라질 때마다 메서드 등을 통해 다른 객체(관찰자)에게 알리는 패턴.ex) 트위터: 새로운 트윗을 팔로우들에게 알려준다.'관찰하기'보다 '전달받기'를 기다린다!옵저버라는 말에 의미는 관찰자이지만, 실제로 옵저버는 능동적으로 관찰하는 것이 아니라 알려주는

이미 제공된 코드를 그대로 사용할 수 없을 때 필요한 형태로 변환하기 위해 그 갭을 매우기 위한 패턴 (변환)소프트웨어는 버전 업 필요 \- 구버전과의 호환성 문제 대두 → 어댑터 패턴은 신버전과 구버전을 공존시키고 유지보수 용이하도록 도와줌