디자인 패턴
1) 소프트웨어 설계에서 자주 발생하는 문제를 해결하기 위해 반복적으로 사용되는 해결책의 모음
2) 공통된 설계 문제를 해결하는 방법을 표준화하고, 재사용 가능한 설계 아키텍처를 제공
3) 주로 객체지향 설계에서 많이 사용
4) 코드의 유연성을 높이고, 시스템의 구조를 더 명확하게 만듦
5) 종류
생성 패턴 (Creational Patterns) |
- 객체 생성 메커니즘을 추상화하여 객체의 생성 방법을 다양화하고 객체 간의 의존성을 줄이는 패턴 ex) 싱글톤(Singleton), 팩토리 메서드(Factory Method), 추상 팩토리(Abstract Factory) 등 |
구조 패턴 (Structural Patterns) |
- 클래스나 객체들을 더 큰 구조로 합치고, 인터페이스를 구현하여 새로운 기능을 제공하는 패턴 ex) 어댑터(Adapter), 브리지(Bridge), 데코레이터(Decorator), 프록시(Proxy) 등 |
행위 패턴 (Behavioral Patterns) |
- 객체 간의 상호작용 및 책임을 분산시키는 패턴으로, 알고리즘과 객체 간의 역할 분배에 중점 ex) 옵서버(Observer), 스트래티지(Strategy), 커맨드(Command), 상태(State) 등 |
❇️ 생성 패턴
1) Builder : 객체 생성과 객체 구현을 분리해서 복잡한 객체를 생성하는 패턴
2) Prototype : 기존 객체를 복제해서 새 객체를 생성할 수 있도록 하는 패턴
3) Factory Method : 상위 클래스에서 객체를 생성하는 인터페이스를 정의하고 하위 클래스에서 인스턴스를 생성하는 패턴
4) Abstract Factory : 관련성 있는 객체들의 집합을 생성하기 위한 인터페이스를 제공하며, 서로 다른 구현체를 생성할 수 있는 패턴
5) Singgleton : 유일한 하나의 인스턴스를 보장하고 여러 곳에서 공유하는 패턴
❇️구조 패턴
1) Bridge : 기능의 클래스 계층과 구현의 클래스 계층을 연결하고, 구현부에서 추상 계층을 분리하여 추상화된 부분과 실제 구현 부분을 독립적으로 확장할 수 있는 패턴
2) Decorator : 상속 대신 기존 클래스에 필요한 기능을 추가하는 설계 패턴으로, 객체 간의 결합을 통해 기능을 동적으로 확장 가능한 패턴
3) Facade : 복잡한 시스템에 대해 단순한 인터페이스를 제공함으로써 느슨한 결합을 제공하는 패턴
4) Flyweight : 클래스 내에서 유사한 데이터를 여러 객체가 공유하여 메모리를 절약하는 패턴
5) Proxy : 실제 객체를 은닉하거나 접근을 제어하면서 클라이언트가 대리 객체를 통해 필요한 추가적인 행동을 취할 수 있도록 해주는 패턴
6) Composite : 개별 객체와 복합 객체를 클라이언트에서 동일하게 사용해서, 객체들의 관계를 트리 구조로 구성하여 부분-전체 계층을 표현하는 패턴
7) Adapter : 기존 클래스를 재사용하고, 기존 인터페이스에 새로운 인터페이스를 추가하여 인터페이스를 맞춰주는 중간 역할을 하는 패턴 ex) 클래스 패턴(상속), 인스턴스 패턴(위임)
❇️ 행위 패턴
1) Interpreter : 언어의 다양한 구문을 나누고 각 구문을 해석하는 클래스들을 작성하여 여러 형태의 언어 구문을 해석할 수 있는 패턴
2) Templete Method : 상위 클래스에서 알고리즘의 구조를 정의하고, 일부 단계를 서브 클래스에서 구체화할 수 있게 하는 디자인 패턴
3) Chain of Responsibility : 요청을 처리할 수 있는 객체들을 동적으로 연결하여 체인을 형성하고, 요청을 받은 객체가 직접 처리하지 않으면 다음 객체로 전달하는 디자인 패턴
4) Command : 기능을 캡슐화해 파라미터로 넘기는 패턴
5) Iterator : 컬렉션의 내부 구조를 노출하지 않고 컬렉션에 포함된 요소들을 순회할 수 있는 패턴
6) Mediator : 객체지향 설계에서 느슨한 결합을 유지하기 위해, 통신의 빈도를 줄이며 중재하는 패턴
7) Memento : 상태 값을 미리 저장해두었다가 복구하는 패턴, Undo 기능 개발 시 사용
8) Observer : 한 객체의 상태가 바뀌면 그 객체에 의존하는 다른 객체들에 연락이 가고 자동으로 내용이 갱신되는 패턴
9) State : 객체의 상태를 캡슐화하여 클래스화하여 그 상태에 따라서 행위를 변경하는 패턴
10) Strategy : 알고리즘을 캡슐화해 동적으로 알고리즘을 대체할 수 있도록 하는 패턴
11) Visitor: 각 클래스의 데이터 구조로부터 처리 기능을 분리하여 별도의 클래스를 만들어 놓고 해당 클래스의 메서드가 각 클래스를 돌아다니며 특정 작업을 수행하도록 만드는 패턴
'공부(TIL) > 정보처리기사' 카테고리의 다른 글
[정보처리기사 실기] 데이터 관련 용어 (0) | 2024.10.05 |
---|---|
[정보처리기사 실기] 공격 기법 (0) | 2024.10.04 |
[정보처리기사 실기] 테스트 기법 (2) | 2024.10.04 |
[정보처리기사 실기] 관계 대수 (0) | 2024.10.04 |
[정보처리기사 실기] 2022년 3회 기출 문제 풀이 (0) | 2024.07.16 |