집에서 하는 공부/정보처리기사

[정보처리기사]디자인 패턴(Gof) 핵심정리

집돌이 공대남 2022. 5. 10. 14:15
반응형

공대남이다.

정보처리기사 2022년 필기, 실기를 치고나서 느낀 나올 가능성이 높고 지속적으로 나오는 개념들을 정리해보려한다.

사실 이것만 알면 어느정도 점수(합격)는 받는다~ 를 목표로 개념을 정리해보려 한다.


1.디자인 패턴(Gof)

-개념

소프트웨어를 설계할 시에 특정한 구간에서 자주 발생하는 문제들이 또 발생했을 때 재사용(Reuse)할 수 있는 해결책

-디자인 패턴 구조

*콘텍스트(Context): 패턴이 적용될 수 있는 상황

*문제(Problem): 패턴이 적용되면 해결될 수 있는 다야한 이슈들을 기술

*해결(Solution): 설계를 구성하는 요소들과 그 요소들 사이의 관계, 책임, 협력 관계를 기술한것. 다양한 상황에 적용할 수 있는 일종의 템플릿

-종류

*생성 패턴(Creational Pattern) (싱프추빌팩)

1. 싱글톤(Singleton) :클래스의 인스턴스가 하나임을 보장하고 접근할 수 있는 전역적인 접근점을 제공하는 패턴.(넌 혼자여야만 해)

2. 프로토타입(Prototype) : 원형패턴이라고도 하고, 생성할 객체가 있으면 원형이 되는 예시물을 이용해서 객체를 복사해서 생성하는 패턴(이건 예시야 프로토타입이라고)

3. 추상팩토리 패턴(Abstract Factory) : 구체적인 클래스에 의존하지 않고 서로 연관되거나 의존적인 객체들의 조합을 만드는 인터페이스를 제공하는 패턴(난 추상적이여서 어디에도 의존하지 않지)

4. 빌더(Builder) :객체의 생성 단계들을 캡슐화해서 객체의 생성을 유연하게 해주는 패턴(캡슐에 널 담아버빌더)

5. 팩토리 매소드(Factory Method) : 객체를 생성하는 인터페이스를 정의하지만, 인스턴스를 만드는클래스는 서브 캘래스에서 결정하도록 하는 패턴, 인스턴스를 서브에서 함!(공장에서 인스턴트 식품을 만드는건 서브가 하고, 계획은 메인이 하지)

 

*구조 패턴(Structural Pattern) (어브캄데퍼플프)

1. 어댑터(Adapter) : 클래스의 인터페이스를 사용자가 기대하는 다른 인터페이스로 변환하는 패턴, 호환성이 없는 인터페이스에 함께 작동하도록 해주는 패턴(전기 어댑터)

2. 브리지 (Bridge) : 구현부에 추상층을 분리하여 각자 독립적으로 변형할 수 있도록 하는 패턴.(내가 다리(Bridge)를 놔줄테니 저기로 가서 독립적으로 살아봐)

3. 컴포시트 (Composite) : 트리 구조로 구성하여 부분-전체 계층을 표현하는 패턴, 단일 /복합객체 모두 동일하게 다루도록 하는 패턴(난 니가 둘이든 혼자든 상관없어)

4. 데코레이터 패턴 (Decorator) : 주어진 상황 및 용도에 따라 어떤 객체에 책임을 덧붙이는 패턴. 기능확장.(크리스마스 트리에 데코를 넣어서 넣는 만큼 화려하지만 무거워진다)

5. 퍼사드 패턴(Facade) : 서브 시스템에 있는 인터페이스 집합에 통합된 하나의 인터페이스를 제공하는 패턴. 서브시스템을 좀 더 쉽게 사용하기 위해 고수준의 인터페이스를 정의(너무 많아 하나로 통일해)

6. 플라이웨이트(FlyWeight) : 경량화! 가볍게!~ 자신있게~

6. 프록시 패턴(Proxy): 어떤 다른 객체로 접근하는 것을 통제하기 위해 그 객체의 매니저를 제공하는 패턴(프락찌를 걸렸는디 또 프락찌가 있었고만)

 

*행위 패턴(Behavioral Pattern) (플프)

1. 옵저버 패턴(Observer) : 객체들 사이에 1:N의 의존관계를 정의하여 어떤 객체의 상태가 변할 때, 의존관계에 있는 모든 객체들이 통지받고 자동으로 갱신(동기화)

2. 상태 패턴(State) : 객체의 내부 상태가 변경될 때 행동을 변경하도록 허락, 객체는 자신의 클래스가 변경되는것처럼 보임. (그... 상태는 좀 어떻소? 행동이 좀 괜찮소?)

3. 스트레이트지 패턴(Strategy) : 동일 계열의 알고리즘을 정의하고, 각각의 캡슐화하며 이들을 상호교환 가능하도록 만드는 것.(비슷한것 끼리 태워서 보내는 전략적 교환)

4. 비지터 패턴(Visitor) : 객체구조를 이루는 원소에 대해 수행할 연산을 표현. 방문자(visitor)는 연산에 적용할 원소의 클래스를 변경하지 않고 새로운 연산을 재정의 할 수 있음. (호텔 방문자는 방을 사용하지 방의 구조를 변경하면 큰일나지)

5. 템플릿 패턴(Template) : 객체의 연산에서 알고리즘의 뼈대만 정의하고, 나머지는 서브클래스에서 이루어지게 하는 패턴. 알고리즘의 구조는 변경하지 않고 알고리즘의 각 단계를 서브클래서에서 재정의 (뼈대(Temp) 만들고 채워(Sub))

6. 역할 사슬 패턴(Chain of Responsibility) : 요청을 처리하는 기회를 하나 이상의 객체에 부여하여 요청을 보내는 쪽과 받는 쪽의 결합을 피하는 패턴. 요청을 받는 객체를 연쇄적으로 묶고 객체를 처리할 수 있을 때까지 요청을 전달(너와 나의 연결 고리 이건 우리안의 소리)

7. 커맨드 패턴(Command) : 요청을 객체로 캡슐화(Strategy는 비슷한거 끼리 캡슐화고, 커맨드는 할 행위, 요청을 객체로 캡슐화)

8. 인터프리터 패턴(Interpreter) : 주어진 언어에 대해서 문법을 위한 표현수단 정의, 해석 (국어쌤)

9. 이터레이터 패턴(Iterator) : 내부 표현부를 노출하지 않고 어던 객체 집합의 원소들을 순차적으로 접근할 수 있는 방법을 제공하는 패턴(안에 안보이면, 순차적으로, 반복적으로 보일 때까지)

10. 메디에이터 패턴(Mediator) : 객체들이 직접 서로 참조하지 않도록 함으로써 객체들간의 느슨한 연결을 촉진시키며, 객체들의 상호작용을 독립적으로 다양화 시킬 수 있도록 해준다.(중재자 역할)

11. 메멘토(Memento) : 구현의 세부 사항을 공개하지 않고, 캡슐화를 위반하지 않고 객체의 이전 상태를 저장하고 복원할 수 있는 패턴.(다 돌려라~)


디자인 패턴에 대해서 구분을 해보았다.

나도 꽤나 디자인패턴 때문에 고생을 했었기에 이렇게 하나하나 적어놓았다.

항상 써보지 못한것을 외우기란 쉽지 않고 그 기억은 휘발성이 된다.

그래서 우리가 일상적인 것에 대입하여 외우면 왜인지 모르겠지만 더욱더 오래 기억에 남아있다.

 

2022년 1회 필기 때에는 나왔지만

1회 실기에는 나오질 않아

2회 실기에는 나올 가능성이 농후해 보인다.

오늘도 공부 열심히 하길 바라며 화이팅이다.

2022.05.11 - [집에서 하는 공부/정보처리기사] - [정보처리기사]테스트 기법(블랙박스 테스트/화이트박스 테스트)

 

[정보처리기사]테스트 기법(블랙박스 테스트/화이트박스 테스트)

공대남이다. 정보처리기사 2022년 필기, 실기를 치고 나서 느낀 나올 가능성이 높고 지속적으로 나오는 개념들을 정리해보려한다. 사실 이것만 알면 어느 정도 점수(합격)는 받는다~ 를 목표로 개

hana-moa.tistory.com

 

반응형