프로그램에서 자주 발생하는 문제를 해결하기 위한 재사용 가능한 설계 템플릿유지보수가 쉽고 유연한 코드를 작성할 수 있도록 도와줌애플리케이션에서 변화하는 부분을 캡슐화하라.변하는 부분을 분리하여 변경이 용이하도록 설계예시: 오리가 날아다니는 기능을 추가할 때, fly()
옵저버 패턴은 객체 간 1:N 관계에서, 한 객체(Subject)의 상태 변화가 발생하면 여러 객체(Observers)에게 자동으로 알림을 보내는 패턴이다. 예시: 뉴스 구독 시스템 사용자가 뉴스레터를 구독하면, 새로운 소식이 나올 때마다 자동으로 알림을 받음.Su
데코레이터 패턴은 객체에 동적으로 새로운 기능을 추가할 수 있도록 하는 패턴이다.이 패턴은 상속을 사용하지 않고, 기존 코드 변경 없이 기능을 확장할 수 있도록 해준다.Component(컴포넌트, 기본 인터페이스) 기본 기능을 정의하는 인터페이스.ConcreteCom
팩토리 패턴(Factory Pattern)은 객체 생성 로직을 캡슐화하여, 객체 생성을 담당하는 별도의 클래스를 제공하는 디자인 패턴이다.이 패턴을 사용하면 객체를 생성하는 코드와 사용하는 코드를 분리할 수 있어 유지보수성이 향상된다. 객체 생성 로직을 숨긴다 → 클
싱글턴(Singleton) 패턴은 하나의 클래스에서 단 하나의 인스턴스만 생성되도록 보장하는 디자인 패턴이다.이 패턴을 사용하면 프로그램 전역에서 동일한 객체를 공유할 수 있다. 하나의 인스턴스만 유지: 메모리 낭비를 줄이고, 전역적으로 같은 객체를 사용하도록 강제한
커맨드 패턴(Command Pattern)은 요청을 객체로 캡슐화하여 요청의 실행, 취소(Undo), 저장을 가능하게 하는 디자인 패턴이다. 이 패턴을 활용하면 실행 요청을 별도의 객체로 분리할 수 있어 코드를 유연하고 확장 가능하게 만들 수 있다.일반적인 방법으로 요
어댑터 패턴은 서로 다른 인터페이스를 가진 클래스들이 함께 동작할 수 있도록 중간에 변환기를 제공하는 패턴이다.즉, 기존 코드의 변경 없이 새로운 인터페이스를 적용하여 클라이언트가 원하는 방식으로 기존 클래스를 사용할 수 있도록 도와준다.기존 코드 변경 없이 새로운 기
반복자 패턴은 데이터를 어떻게 저장하고 관리하는지(컬렉션의 내부 구조) 와 데이터를 어떻게 순서대로 꺼내서 사용하는지(순회 로직) 를 깔끔하게 분리해주는 디자인 패턴코딩을 하다 보면 다양한 자료구조를 사용하게 된다. 예를 들어, ArrayList, 배열, HashMap
템플릿 메소드(Template Method) 패턴은 알고리즘의 뼈대는 부모 클래스에 정의하고, 알고리즘의 세부적인 단계는 자식 클래스에서 구현하도록 하는 디자인 패턴입니다. 이렇게 하면 알고리즘의 구조는 고정된 채, 세부 구현만 변경할 수 있어 코드 재사용성과 유연성을
프록시 패턴은 객체에 대한 접근을 제어하는 대리인을 제공하는 구조적 디자인 패턴임.즉, 어떤 객체가 있을 때 그 객체를 직접 사용하지 않고, 대신 프록시 객체를 통해 접근하게 함으로써,접근 제어, 지연 로딩, 권한 제어, 원격 접근 등 부가적인 책임을 수행할 수 있게
복합 패턴은 여러 디자인 패턴을 조합해서 복잡한 시스템을 설계할 수 있도록 하는 패턴 구성 방식임.책에서는 "오리 시뮬레이터"를 통해 다양한 패턴을 조합하여 확장 가능하고 유연한 시스템을 만들어냄.오리 객체를 공장(DuckFactory)을 통해 생성 QuackCoun