디자인 패턴이란?
소프트웨어 디자인 과정에서 자주 발생하는 문제들을 해결하기 위해 맞춤화할 수 있는 미리 만들어진 청사진(템플릿)
디자인 패턴의 분류
- 생성 패턴들은 기존 코드의 재활용과 유연성을 증가시키는 객체 생성 메커니즘들을 제공
- 구조 패턴은 구조를 유연하고 효율적으로 유지하면서 객체와 클래스를 더 큰 구조로 조합하는 방법을 설명
- 행위 패턴은 객체 간의 효과적인 의사소통과 책임 할당을 처리
생성 패턴의 종류
싱글턴 패턴(Singleton Pattern)
특정 클래스에 객체 인스턴스가 하나만 만들어지도록 해주는 패턴
추상 팩토리 패턴(Abstract Factory Pattern)
구상 클래스에 의존하지 않고도 서로 연관되거나 의존적인 객체로 이루어진 제품군을 생산하는 인터페이스를 제공
팩토리 메소드 패턴(Factory method pattern)
객체를 생성할 때 필요한 인터페이스를 만들고, 어떤 클래스의 인스턴스를 만들지는 서브클래스에서 결정
구조 패턴의 종류
데코레이터 패턴(Decorator Pattern)
데코레이터 패턴으로 객체에 추가 요소를 동적으로 더할 수 있음
프록시 패턴(Proxy Pattern)
특정 객체로의 접근을 제어하는 대리인(특정 객체를 대변하는 객체)을 제공
컴포지트 패턴(Composite Pattern)
컴포지트 패턴으로 객체를 트리구조로 구성해서 부분-전체 계층구조를 구현
어댑터 패턴(Adapter pattern)
특정 틀래스 인터페이스를 클라이언트에서 요구하는 다른 인터페이스로 변환
퍼사드 패턴(facade pattern)
서브시스템에 있는 일련의 인터페이스를 통합 인터페이스로 통합
행위 패턴의 종류
템플릿 메소드 패턴(Template Method Pattern)
알고리즘의 골격을 정의합니다. 템플릿 메소드를 사용하면 알고리즘 일부 단계를 서브클래스에서 구현할 수 있으며, 알고리즘의 구조는 그대로 유지하면서 알고리즘의 특정 단계를 서브클래스에서 재정의
싱글턴 패턴(Singleton Pattern)
특정 클래스에 객체 인스턴스가 하나만 만들어지도록 해주는 패턴
상태 패턴(State Pattern)
상태 패턴을 사용하면 객체의 내부 상태가 바뀜에 따라서 객체의 행동을 바꿀 수 있음
반복자 패턴(iterator pattern)
컬렉션의 구현 방법을 노출하지 않으면서 집합체 내의 모든 항목에 접근하는 방법을 제공
옵저버 패턴(observer pattern)
한 객체의 상태가 바뀌면 그 객체에 의존하는 다른 객체에게 연락이 가고 자동으로 내용이 갱신