정보처리기사 실기 - 디자인패턴 문제
디자인패턴을 공부하셨다면 정답을 가리고 문제를 풀어보세요!
1. 객체를 생성하기 위해 중복 코드를 제거하고 유연성을 높이는 디자인 패턴은 무엇인가요?
싱글톤 패턴 - 객체를 오직 하나의 인스턴스만 생성하도록 제한하여, 중복된 인스턴스 생성을 방지하고 오직 하나의 인스턴스에 접근할 수 있게 하는 디자인 패턴입니다.
2. 객체의 행동을 동적으로 변경하고 구성 요소를 추가할 수 있는 디자인 패턴은 무엇인가요?
데코레이터 패턴 - 객체에 추가적인 기능을 동적으로 적용하거나 제거할 수 있게 해주는 디자인 패턴으로, 기존 클래스를 수정하지 않고도 확장할 수 있습니다.
3. 객체의 상태에 따라 행동을 변경하고, 객체의 상태 변경을 감지하여 통보하는 디자인 패턴은 무엇인가요?
상태 패턴 - 객체의 상태에 따라 행동을 변경하고, 객체의 상태 변경을 감지하여 통보하는 디자인 패턴입니다.
4. 여러 개의 클래스들을 하나의 추상 클래스로 묶어 동일한 인터페이스를 제공하고, 서로 다른 구현을 쉽게 교체할 수 있는 디자인 패턴은 무엇인가요?
컴포지트 패턴 - 객체들을 트리 구조로 구성하여 단일 객체와 복합 객체를 동일하게 취급할 수 있도록 하는 디자인 패턴입니다.
5. 객체의 구성 요소들을 계층 구조로 표현하여 객체를 부분-전체 계층 구조로 만드는 디자인 패턴은 무엇인가요?
브리지 패턴 - 추상화와 구현을 분리하여 두 가지를 독립적으로 확장할 수 있게 하는 디자인 패턴입니다.
6. 상속과 구성을 동시에 활용하여 객체의 기능과 구현을 분리하는 디자인 패턴은 무엇인가요?
어댑터 패턴 - 기존 클래스의 인터페이스를 변경하지 않고 새로운 인터페이스를 제공하는 패턴입니다.
7. 여러 객체들이 각각의 독립적인 방식으로 동작하면서도 상호작용할 수 있게 해주는 디자인 패턴은 무엇인가요?
옵저버 패턴 - 객체 간의 일대다 의존성 관계를 구현하여 한 객체의 상태가 변경되면 해당 객체에 의존하는 다른 객체들에게 자동으로 통지하는 디자인 패턴입니다.
8. 객체와 객체 간의 결합도를 낮추고, 객체 간의 직접적인 연결을 방지하여 유지 보수와 확장성을 높이는 디자인 패턴은 무엇인가요?
미디에이터 패턴 - 객체 간의 상호작용을 중재하여 복잡한 관계를 단순화하고, 객체 간의 직접적인 연결을 방지하는 디자인 패턴입니다.
9. 객체의 행동을 캡슐화하여 요청과 실제 수행을 분리하고, 실행 취소와 다시 실행을 지원하는 디자인 패턴은 무엇인가요?
커맨드 패턴 - 요청과 실제 수행을 분리하고, 실행 취소와 다시 실행을 지원하는 디자인 패턴입니다.
10. 다양한 객체를 하나의 인터페이스로 접근할 수 있도록 하고, 기존 인터페이스를 변경하지 않고 사용할 수 있도록 도와주는 디자인 패턴은 무엇인가요?
어댑터 패턴 - 기존 인터페이스를 변경하지 않고 다른 인터페이스를 사용할 수 있게 해주는 디자인 패턴입니다.
11. 객체의 상태를 저장하고 복원하여 이전 상태로 되돌릴 수 있는 디자인 패턴은 무엇인가요?
메멘토 패턴 - 객체의 상태를 저장하고 복원하여 이전 상태로 되돌릴 수 있게 해주는 디자인 패턴입니다.
12. 동일한 작업을 다양한 방법으로 수행하고자 할 때 사용하는 디자인 패턴은 무엇인가요?
스트래티지 패턴 - 알고리즘의 구조를 정의하고, 일부 단계를 서브클래스에서 구현하도록 하는 디자인 패턴입니다.
13. 객체 구조와 독립적인 작업을 분리하여 유지 보수와 확장성을 높이는 디자인 패턴은 무엇인가요?
템플릿 메소드 패턴 - 알고리즘의 구조를 정의하고, 일부 단계를 서브클래스에서 구현하도록 하는 디자인 패턴입니다.
14. 객체의 행동을 다양한 상태에 따라 변경하고, 상태 변경을 캡슐화하여 유연성을 높이는 디자인 패턴은 무엇인가요?
스테이트 패턴 - 객체의 상태에 따라 행동을 변경하고, 객체의 상태 변경을 감지하여 통보하는 디자인 패턴입니다.
15. 동일한 작업을 다양한 방법으로 수행하고자 할 때, 작업의 구조를 템플릿으로 정의하고 하위 클래스에서 구체적인 구현을 제공하는 디자인 패턴은 무엇인가요?
템플릿 메소드 패턴 - 알고리즘의 구조를 정의하고, 일부 단계를 서브클래스에서 구현하도록 하는 디자인 패턴입니다.
16. 객체 간의 상호작용을 중재하여 복잡한 관계를 단순화하고, 객체 간의 직접적인 연결을 방지하는 디자인 패턴은 무엇인가요?
미디에이터 패턴 - 객체 간의 상호작용을 중재하여 복잡한 관계를 단순화하고, 객체 간의 직접적인 연결을 방지하는 디자인 패턴입니다.
17. 객체가 처리할 수 없는 요청을 다른 객체에게 전달하여 처리하도록 하고, 처리 객체를 연결하여 요청 처리 체인을 구성하는 디자인 패턴은 무엇인가요?
책임 연쇄 패턴 - 객체 간의 상호작용을 중재하여 복잡한 관계를 단순화하고, 객체 간의 직접적인 연결을 방지하는 디자인 패턴입니다.
18. 동일한 작업을 다양한 방법으로 수행하고자 할 때, 작업을 캡슐화하여 호출자와 수행 객체를 분리하고 연산을 객체로 둘러싸는 디자인 패턴은 무엇인가요?
어댑터 패턴 - 인터페이스를 통해 객체에 접근하고, 객체를 다른 구현으로 변경할 수 있게 해주는 디자인 패턴입니다.
19. 객체들을 구조화하여 특정 작업(연산)을 추가하거나 변경할 수 있도록 하고, 각 객체들의 구조와 작업을 독립적으로 확장할 수 있는 디자인 패턴은 무엇인가요?
방문자 패턴 - 객체들을 구조화하여 특정 작업(연산)을 추가하거나 변경할 수 있도록 하고, 각 객체들의 구조와 작업을 독립적으로 확장할 수 있는 디자인 패턴입니다.
20. 기존의 객체를 복제하여 새로운 객체를 생성하고자 할 때, 복제할 객체의 타입을 감추고 쉽게 생성할 수 있도록 하는 디자인 패턴은 무엇인가요?
프로토타입 패턴 - 기존의 객체를 복제하여 새로운 객체를 생성하고자 할 때, 복제할 객체의 타입을 감추고 쉽게 생성할 수 있도록 하는 디자인 패턴입니다.