구조 패턴
·
OOP/GoF
Adapter 패턴더보기호환되지 않는 인터페이스를 가진 객체들을 연결할 수 있게 해주는 패턴한 객체의 인터페이스를 클라이언트가 기대하는 인터페이스로 변환해주는 역할해준다.즉 인터페이스가 맞지 않는 객체들을 연결해주는 중간 변환기ex)🧩 기존 시스템과 새 시스템의 인터페이스가 다를 때예: 레거시 시스템 ↔ 최신 모듈🔄 외부 라이브러리와 내 코드가 안 맞을 때인터페이스 이름, 메서드 시그니처가 다를 때♻️ 기존 코드를 바꾸지 않고 재사용하고 싶을 때인터페이스만 바꾸고 내부는 그대로 둠상속을 사용하는 방법과 위임을 사용하는 방법이렇게 2개가 있다. //클라이언트가 기대하는 인터페이스 (Target)interface MediaPlayer { void play(String fileName);}//기존 시..
행동 패턴
·
OOP/GoF
Strategy 패턴더보기전략을 객체로 캡슐화해서 실행 중에 갈아 끼울 수 있게 한다.// 전략 인터페이스interface FlyBehavior { void fly();}// 구체 전략들class FlyWithWings implements FlyBehavior { public void fly() { System.out.println("날개로 납니다!"); }}class FlyNoWay implements FlyBehavior { public void fly() { System.out.println("저는 못 날아요."); }}// Context 클래스class Duck { private FlyBehavior flyBehavior; public Du..
생성 패턴
·
OOP/GoF
Singleton 패턴더보기전역에서 하나만 존재하는 객체를 만들고, 모두가 공유하게 하는 패턴 ex)🧠 하나의 공유 인스턴스가 필요한 경우설정 관리자, 로거, DB 커넥션 풀 등🔒 동기화된 단일 접근점이 필요할 때예: 리소스 초기화, 상태 저장📦 전역 상태를 저장하고 싶을 때캐시, 환경 설정, 앱 전역 플래그 등public class Singleton { private static Singleton instance; private Singleton() {} // 외부에서 생성 못하게 private 생성자 public static synchronized Singleton getInstance() { if (instance == null) { instan..