Singleton : 애플리케이션에서 하나의 객체만 존재하도록 보장하여, 객체를 재사용하고 자원의 낭비를 방지하는데 사용된다.
왜 사용 하는가 : 객체가 여러 번 생성되는 것을 방지하고, 애플리케이션 전체에서 하나의 인스턴스를 공유하기 위해
Flyweight : 객체의 공유를 통해 메모리 사용을 최적화하는 디자인 패턴
왜 사용 하는가 : 메모리낭비를 막기위해 사용, 불필요한 객체를 생성하지 않고 이미 만들어진 객체를 재활용 하기 위해
Prototype(복제) : 객체를 복사하여 사용하는 것
왜 사용 하는가 : 객체의 공유를 막고, 각 객체의 독립적인 상태를 유지하기 위해
하나의 객체를 여러 군데에서 공유해서 사용하면 이 객체의 상태가 공유되기 때문에 다른 곳에서의 상태 변화가 모든 곳에 영향을 미치게 된다, 그리고 생성과정이 복잡하고 어려울수록 복제하면 과정과 자원을 아낄수잇다.
복제된 객체를 사용하는 경우 각각의 객체들이 독립된 상태를 가질 수 있다. 각 객체의 상태가 공유되지 않기 때문에 다른 곳에서의 상태 변화가 다른 객체에게 영향을 끼치지 않는다.
Template Method(틀) : 알고리즘의 전체 흐름을 상위 클래스에서 정의하고, 구체적인 단계는 하위 클래스에서 구현하도록 하는 방법
왜 사용 하는가 : 공통된 알고리즘의 흐름을 템플릿 메서드에 정의하여 중복 코드를 줄이고 재사용성을 높일 수 있고, 공통된 로직이 상위 클래스에 집중되므로 변경사항을 추적하고 관리하기 편하며 변경에 유리하다.
Strategy(전략) : 객체의 행위를 정의하는 디자인 패턴, 알고리즘을 선택할 수 있도록 하는 패턴
왜 사용 하는가 : 알고리즘을 하나의 객체로 만들고, 이 객체를 동적으로 변경할 수 있도록 하여, 알고리즘과 클라이언트를 분리하는 것으로, 클라이언트는 여러 알고리즘을 선택할 수 있고, 새로운 알고리즘을 추가할 때 기존 코드를 변경하지 않고도 새로운 전략을 추가할 수 있다.
Bridge(다리) : 기능 클래스 계층과 구현 클래스 계층을 분리해서 각자 독립적으로 확장할 수 있도록 하는 패턴
왜 사용 하는가 : 강한 결합인 상속 대신 약한 결합인 위임을 사용해 기능과 구현이 서로 영향을 주지 않도록 분리하고, 클래스 수 증가 문제를 해결하며, 런타임에 구현 객체를 교체할 수 있는 유연한 구조를 만들기 위함
Iterator(반복) : 집합체의 요소를 통일된 방법으로 순차적으로 접근할 수 있도록 하는 패턴
왜 사용 하는가 : 컬렉션의 내부 구조를 감추고, 클라이언트가 구조에 상관없이 요소들을 처리할 수 있도록 하기 위함
Decorator(장식) : 기존 객체의 코드를 변경하지 않고, 동적으로 새로운 기능을 덧붙이는 패턴
왜 사용 하는가 : 기존 코드를 수정하지 않고 기능을 동적으로 추가하며, 클래스 간 책임을 분리하고 기능을 재사용하기 위함
Proxy(대리인) : 실제 객체에 대한 접근을 제어하기 위해 대리 객체를 두는 패턴
왜 사용 하는가 : 객체 생성 비용이 크거나 접근을 제한해야 할 때, 부가 기능을 추가하고 싶을때 사용한다.
Adapter(래퍼) : 서로 다른 인터페이스를 가진 클래스들을 연결해주는 패턴
왜 사용 하는가 : 관계가 없는 인터페이스를 가진 클래스들을 연결해서 기존 코드의 변경 없이 재사용 하기 위함
Factory Method(공장) : 객체 생성을 하위 클래스에서 결정하도록 하고, 상위 클래스는 생성 방법만 정의하는 패턴
왜 사용 하는가 : 객체 생성 로직을 서브클래스로 분리하여 인스턴스 생성을 캡슐화하고 객체 생성 방식을 유연하게 변경할 수 있도록 하기 위함
Builder(조립) : 복잡한 객체를 단계별로 생성할 수 있도록 분리한 패턴
왜 사용 하는가 : 객체 생성 과정을 단계별로 분리해 복잡한 형태의 객체를 일관된 방식으로 생성하기 위함
Abstract Factory(추상 공장) : 관련 있는 객체들을 일관된 방식으로 생성할 수 있게 해주는 패턴
왜 사용 하는가 : 관련된 객체들을 통일된 방식으로 생성하여 일관성과 호환성을 확보하고 클라이언트가 구체 클래스에 의존하지 않도록 설계하기 위함
Composite(복합물) : 개별 객체와 객체 집합을 동일하게 다뤄 계층 구조를 손쉽게 구성하고 관리할 수 있게 해주는 패턴
왜 사용 하는가 : 계층적 구조를 가진 객체를 일관된 방식으로 처리할 수 있도록 하기 위함
Visitor(방문자) : 객체 구조는 유지한 채 기능을 외부에서 정의하고 추가할 수 있도록 해주는 패턴
왜 사용 하는가 : 객체 구조를 수정하지 않고 새로운 기능을 추가하고 싶을 때 사용한다.
Chain of Responsibility(책임 사슬) : 요청을 처리할 수 있는 객체들을 연결해 순차적으로 처리하게 하는 패턴
왜 사용 하는가 : 요청을 처리할 객체를 고정하지 않고 유연하게 연결해 요청 처리 책임을 객체들 사이에 분산시켜 결합도를 낮추고 유지보수를 쉽게 만들기 위함
Facade(창구-파사드) : 복잡한 시스템을 단순화된 인터페이스로 감싸주는 패턴
왜 사용 하는가 : 복잡한 내부 로직을 감추고 클라이언트에게 단순한 접근을 제공하기 위함
Mediator(중재자) : 객체 간 직접 통신 대신 중재자를 통해 간접적으로 소통하게 하는 패턴
왜 사용 하는가 : 객체 간의 복잡한 의존 관계를 줄이고 객체의 결합도를 낮추기 위함
Observer(관찰자) : 객체의 상태 변화에 따라 의존 객체들이 자동으로 알림을 받는 패턴
왜 사용 하는가 : 상태가 바뀌는 객체가 자신과 느슨하게 연결된 객체들에게 상태 변경을 자동으로 알려 각 객체가 독립적으로 반응할 수 있도록 만들기 위함
Memento(상태 저장) : 객체의 상태를 저장하고 필요할 때 복원할 수 있게 하는 패턴
왜 사용 하는가 : 캡슐화를 유지하면서 이력을 안전하게 저장하기 위함
State(상태) : 객체의 상태에 따라 동작이 변경되는 것을 상태 객체로 분리하는 패턴
왜 사용 하는가 : 상태가 많고 복잡한 경우, 조건문 대신 상태 객체 간 전환을 통해 깔끔한 구조를 유지하기 위함
Command(명령) : 요청을 객체로 캡슐화하는 패턴
왜 사용 하는가 : 실행 명령을 객체로 분리함으로써, 실행과 요청을 분리하고 유연하게 만들기 위함
Interpreter : 문법을 클래스 구조로 표현하고 주어진 표현식을 해석할 수 있게 만든 패턴
왜 사용 하는가 : 자주 사용되는 표현식이나 언어 문법을 객체로 만들어 문장을 해석하고 실행하는 구조를 재사용 가능하게 만들기 위함
'요약' 카테고리의 다른 글
17. 네트워크 요약 - 패스트캠퍼스 백엔드 부트캠프 3기 (2) | 2025.05.15 |
---|---|
16. 운영체제 요약 - 패스트캠퍼스 백엔드 부트캠프 3기 (4) | 2025.05.12 |
14. 시스템 설계 기초 요약 (1) - 패스트캠퍼스 백엔드 부트캠프 3기 (0) | 2025.05.01 |
13. 자바 용어 요약 ver.2 (2) - 패스트캠퍼스 백엔드 부트캠프 3기 (1) | 2025.04.10 |
12. 자바 용어 요약 ver.2 (1) - 패스트캠퍼스 백엔드 부트캠프 3기 (2) | 2025.04.09 |