정보처리기사 실기시험에서 디자인패턴 문제는 자주 출제되고 있어요.
기사 실기시험은 공부할 내용이 방대하고 비전공자인 저에겐 익숙하지 않은 내용들이 많아 암기가 쉽지 않네요.
이번엔 자주 출제되는 디자인패턴에 대해서 정리해보려고해요.
2023년 1회 시험에는 Proxy문제가 나왔었는데 다행히 알고 있던거라 정답을 맞췄어요.
2회 시험에는 Singleton과 visitor가 출제되었는데 visitor문제는 틀리고 말았네요.
하하하하;;
책을 보고 암기했지만 전혀~ 모르는 내용인지라 어찌나 난감했던지..;
문제에서는 연산을 분리 어쩌고... 라고 나왔는데..
보자마자
어..이게 뭐지???? 저런게 있었나??????
대충찍고 나와서 확인을 해보았는데 정답은 visitor 두둥!!
제가 공부했던 책에는
visitor : 작업 종류의 효율적 추가/변경
딱 요렇게만 설명이 되어있어서... 암기를 했지만 풀지 못했다는거.. 누구라도 저렇게만 보고는 못 풀었을듯 ㅎㅎㅎ
그래서 다른책을 살펴보니 연산이라는 말이 있더라구요...ㅠㅠ
아...멘붕..;
정확히 이해하지 못하면 문제를 풀수가 없구나...;;;;
이렇게 기출문제와 책의 설명이 다르게 나오는 것을 보고나니 책에 대한 신뢰가 없어지고..;
어떻게 공부를 해야하나..; 갈피를 잃었네요.
아직 결과발표가 나오지 않았지만 합격할 자신이 없는 전 조용히 3회 시험을 준비합니다.
몇일 공부하고 척척 합격하시는 분들 많으시던데 정말 존경스럽습니당!
다음시험에도 디자인패턴 문제가 나오겠죠? ㅠㅠ 보고 또 봐도 헷갈리네요. ㅎㅎ
하지만 이번에 쉬운 예시를 통해 머릿속에 쏙쏙! 넣어볼게요.
이리와!!~ 널 잘근잘근 씹어먹을것이닷!!!
* 디자인 패턴 종류(생구행) : 생성패턴, 구조패턴, 행위패턴
(1) 생성패턴 : 객체 생성을 위한 패턴, 인스턴스 생성 추상화 방법
(2) 구조패턴 : 클래스 or 객체 조합으로 대규모 구조를 만드는 패턴
(3) 행위패턴 : 객체간의 기능을 분배, 알고리즘을 수행하는 패턴
1. 생성패턴
객체 생성을 위한 패턴, 인스턴스 생성 추상화 방법
(1) 추상팩토리(Abstract Factory) : 관련된 객체들의 집합을 생성하고 조립
추상 팩토리는 관련된 여러 종류의 객체들을 생성하는 인터페이스를 제공하며, 구체적인 클래스에 의존하지 않고 객체들을 생성할 수 있는 디자인 패턴입니다.(제품군별 객체 생성)
예시
'공장의 공장'이라고 생각하시면 됩니다.
예를 들어, 자동차 공장의 경우, 추상 팩토리를 사용하여 엔진, 바퀴, 시트와 같은 부품들의 집합을 생성하고 조립할 수 있습니다. 각 부품들은 구체적인 클래스들로 구현되지만, 클라이언트 코드는 이들 클래스들을 직접 알 필요가 없이 추상 팩토리를 통해 객체들을 생성하고 조립할 수 있습니다. 이렇게 하면 클라이언트 코드가 구체적인 클래스에 의존하는 것을 피하면서도 관련된 객체들을 쉽게 생성할 수 있습니다.
(2) 빌더(Builder) : 복잡한 객체의 생성 과정을 구조화하고 분리
빌더 패턴은 복잡한 객체의 생성을 단계별로 분리하여 동일한 생성 절차로 다양한 표현을 만들 수 있는 디자인 패턴입니다.
예시
집을 짓기 위해 필요한 단계들을 집 빌더로 추상화하고, 각 단계를 구체적으로 구현하는 방식으로 집을 건설하는 것이 빌더 패턴입니다.
이렇게 빌더 패턴을 사용하면 집의 건설 과정을 단계별로 관리할 수 있으며, 동일한 건설 방법을 사용하여 다양한 종류의 집을 만들 수 있습니다.
(3) 팩토리 메소드(Factory Method) : 객체 생성 방법을 캡슐화하여 서브클래스가 해당하는 객체를 생성
팩토리 메서드 패턴은 객체 생성을 담당하는 인터페이스를 정의하고, 서브클래스들이 어떤 클래스의 인스턴스를 생성할지 결정하는 디자인 패턴입니다. Virtual-Constructor 패턴이라고도 한다.
예시
아메리카노를 주문하면 아메리카노를 만들기 위한 아메리카노 팩토리 메서드를 호출하고, 카페 라떼를 주문하면 카페 라떼를 만들기 위한 카페 라떼 팩토리 메서드를 호출합니다. 이렇게 팩토리 메서드 패턴을 사용하면 커피 전문점은 어떤 커피가 주문되었는지 알 필요가 없이, 해당 커피를 만들기 위한 팩토리 메서드를 호출하여 주문에 맞게 커피를 생성할 수 있습니다.
(4) 프로토타입(Prototype) : 기존 객체 복사, 새로운 객체 생성
프로토타입 패턴은 기존 객체를 복사하여 새로운 객체를 생성하는 디자인 패턴입니다.
예시
각각의 포스트잇은 크기와 색상 등이 다를 수 있지만, 모양과 기능은 동일합니다.
프로토타입 패턴을 활용하면, 먼저 하나의 포스트잇 객체를 만들어두고, 이를 복사하여 새로운 포스트잇을 생성할 수 있습니다. 즉, 처음에 한 개의 포스트잇을 만들어 놓고 이를 원본으로 삼아 새로운 포스트잇을 만들 때, 복사하여 손쉽게 생성할 수 있는 것입니다.
원본을 복사하여 새로운 포스트잇을 생성하므로, 객체 생성 과정을 단순화하고 유지보수성을 향상시킬 수 있습니다.
(5) 싱글톤(Singleton) : 단 하나의 인스턴스 생성
싱글톤 패턴은 프로그램 내에서 단 하나의 인스턴스만 생성되어야 하는 클래스에 적합한 디자인 패턴입니다.
예시
우리가 사용하는 컴퓨터에는 프린터 설정을 관리하는 객체가 필요합니다. 이 설정은 여러 애플리케이션에서 공유되어야 하므로, 한 번만 생성되고 모든 애플리케이션에서 동일한 설정을 사용해야 합니다.
이를 통해 여러 애플리케이션에서 같은 프린터 설정을 공유하고, 메모리 공간을 절약할 수 있습니다.
'공부' 카테고리의 다른 글
정보처리기사 실기 - 행위패턴(디자인패턴) (0) | 2023.08.08 |
---|---|
정보처리기사 실시 - 구조패턴(디자인패턴) (0) | 2023.08.08 |
정보처리기사 실기 공부하기 2 (0) | 2023.06.14 |
정보처리기사 실기 공부하기 1 (0) | 2023.06.12 |
C언어 기초 연습문제 2 - 배열 (0) | 2023.05.18 |