6. GoF (Gangs of Four) 디자인 패턴에 대한 설명으로 틀린 것은?
① factory method pattern은 상위클래스에서 객체를 생성하는 인터페이스를 정의하고, 하위클래스에서 인스턴스를 생성하도록 하는 방식이다.
② prototype pattern은 prototype을 먼저 생성하고 인스턴스를 복제하여 사용하는 구조이다.
❸ bridge pattern은 기존에 구현되어 있는 클래스에 기능 발생 시 기존 클래스를 재사용할 수 있도록 중간에서 맞춰주는 역할을 한다.
④ mediator pattern은 객체간의 통제와 지시의 역할을 하는 중재자를 두어 객체지향의 목표를 달성하게 해준다.
이 문제는 GoF (Gang of Four) 디자인 패턴에 대한 설명 중에서 틀린 설명을 찾아내는 문제입니다. GoF 디자인 패턴은 객체지향 설계에서 자주 사용되는 패턴을 정의한 책 **"Design Patterns: Elements of Reusable Object-Oriented Software"**에서 소개된 23개의 디자인 패턴을 의미합니다.
각각의 선택지를 살펴보며 어떤 설명이 틀린지 분석해보겠습니다.
문제 분석
- ① factory method pattern은 상위클래스에서 객체를 생성하는 인터페이스를 정의하고, 하위클래스에서 인스턴스를 생성하도록 하는 방식이다.
- 맞습니다.
- Factory Method 패턴은 객체 생성의 인터페이스를 정의하고, 어떤 클래스에서 인스턴스를 만들지를 하위 클래스에 맡기는 방식입니다. 즉, 객체 생성에 대한 구체적인 결정은 서브클래스에서 하게 되어, 객체 생성 방법을 유연하게 만들 수 있습니다.
- ② prototype pattern은 prototype을 먼저 생성하고 인스턴스를 복제하여 사용하는 구조이다.
- 맞습니다.
- Prototype 패턴은 객체를 최초로 생성한 후, 이를 복제(clone)하여 새로운 객체를 생성하는 방식입니다. 객체를 직접 생성하는 대신, 기존의 객체를 복제하는 방식으로 성능을 향상시키거나, 객체 생성에 필요한 비용을 줄이는 데 유용합니다.
- ❸ bridge pattern은 기존에 구현되어 있는 클래스에 기능 발생 시 기존 클래스를 재사용할 수 있도록 중간에서 맞춰주는 역할을 한다.
- 틀립니다.
- Bridge 패턴은 추상화(abstraction)와 구현(implementation)을 분리하여 독립적으로 확장할 수 있게 만드는 구조입니다. 즉, 추상화와 구현을 서로 독립적으로 변경할 수 있도록 중간에서 연결 역할을 하는 패턴입니다. 하지만, "기존 클래스에 기능 발생 시 기존 클래스를 재사용할 수 있도록 맞춰준다"는 설명은 Bridge 패턴의 본질과 맞지 않습니다.
- Bridge 패턴의 핵심은 추상화와 구현을 별도의 클래스 계층으로 분리하여 둘을 독립적으로 확장할 수 있게 하는 것입니다.
- ④ mediator pattern은 객체간의 통제와 지시의 역할을 하는 중재자를 두어 객체지향의 목표를 달성하게 해준다.
- 맞습니다.
- Mediator 패턴은 객체들 간의 상호작용을 중재하는 중재자(Mediator) 객체를 도입하여, 객체들 간의 직접적인 상호작용을 방지하고, 중재자가 모든 상호작용을 처리하도록 하는 패턴입니다. 이를 통해 객체들이 서로 간섭하지 않고 독립적으로 동작할 수 있습니다.
결론
- 틀린 설명은 ❸ Bridge 패턴에 대한 설명입니다.
- Bridge 패턴은 추상화와 구현을 분리하여 독립적으로 확장할 수 있게 하는 패턴이며, 기존 클래스의 재사용과는 다릅니다. 따라서 ❸이 정답입니다.
Bridge 패턴 간단한 설명
Bridge 패턴을 예시로 설명하면, 두 개의 클래스 계층이 있다고 가정해봅시다: **추상화(Abstraction)**와 **구현(Implementation)**입니다. 이 두 계층을 독립적으로 확장할 수 있도록 Bridge 역할을 하는 클래스를 도입하는 것입니다.
# 추상화 클래스
class RemoteControl:
def __init__(self, device):
self.device = device
def turn_on(self):
self.device.turn_on()
def turn_off(self):
self.device.turn_off()
# 구현 클래스
class TV:
def turn_on(self):
print("TV가 켜졌습니다.")
def turn_off(self):
print("TV가 꺼졌습니다.")
# 사용 예
tv = TV()
remote = RemoteControl(tv)
remote.turn_on() # TV가 켜졌습니다.
remote.turn_off() # TV가 꺼졌습니다.
위 예시에서 RemoteControl은 추상화 계층이고, TV는 구현 계층입니다. RemoteControl은 TV와 관계를 맺고 있지만, 추상화 계층과 구현 계층은 서로 독립적입니다. 이는 Bridge 패턴이 추상화와 구현을 분리하여 독립적으로 확장할 수 있게 하는 방식입니다.
이해가 되셨나요? 추가적으로 궁금한 점이 있으면 언제든지 질문해주세요!
'기출문제 > 정보처리기사' 카테고리의 다른 글
2021년 2회 정보처리기사 기출문제 8번 (0) | 2025.03.20 |
---|---|
2021년 2회 정보처리기사 기출문제 7번 (1) | 2025.03.20 |
2021년 2회 정보처리기사 기출문제 5번 (0) | 2025.03.20 |
2021년 2회 정보처리기사 기출문제 4번 (0) | 2025.03.20 |
2021년 2회 정보처리기사 기출문제 3번 (0) | 2025.03.20 |