본문 바로가기
정보처리기사

[정보처리기사 실기] 디자인 패턴 - 행위 패턴 암기하기!

by 공불러 2024. 2. 28.
728x90
반응형

[정보처리기사 실기] 디자인 패턴 - 행위 패턴 암기하기!

디자인 패턴 시리즈 그 마지막은 행위 패턴입니다.

두음만 외우는 것도 나쁘지 않지만, 시험을 내시는 분들이 어렵게 내기 위해서 구체적인 내용을 물어봅니다. 생성패턴보단 구조패턴과 행위패턴에 대해 많이 출제 하므로 자주 보시는 것을 추천드립니다.

 

2024.02.22 - [정보처리기사] - [정보처리기사] Gof 디자인 패턴 생성패턴 암기하기 (feat. 스타크래프트)

2024.02.27 - [정보처리기사] - [정보처리기사] 구조패턴 암기하기

목차

    행위 패턴이란?

    행위 패턴(Behavioral Patterns)은 객체 간의 상호작용을 중심으로 설계되며, 객체들 간의 역할책임 및 행동에 대한 패턴을 제공합니다. 이러한 패턴은 애플리케이션의 행위를 구조화하고 관리하는 데 도움이 됩니다. 각 행위 패턴은 특정한 디자인 문제를 해결하기 위한 고유한 방법을 제공합니다. 

    행위 패턴 암기표 키워드

    패턴명 설명 키워드
    Mediator
    *빈출

    상호작용, 중재자
    여러 객체 간의 상호작용을 중앙집중적으로 관리

    객체 간의 통제와 지시의 역할을 하는 중재자를 두어 객체지향의 목표를 달성

    여러 객체들이 서로 메시지를 주고 받는 상호작용을 특정 객체 안에서 캡슐화하여 서로의 존재를 모르는 사애에서도 메시지를 주고받으며 협력할 수 있도록 함.

    객체 수가 많아 복잡해진 상태를 가정

    복잡해지면 느슨한 결합을 유지하기가 어려움

    중재자가 통신빈도를 줄임

    상호작용의 유연한 변경을 지원
    중재자, 중간에서 통재,
    상호작용
    interpreter
    (한글 뜻 : 통역사)

    해석
    문법 규칙을 기반으로 문장을 해석
    프로그래밍 언어의 문법을 해석

    언어의 다양한 해석구체적 구문을 나누고 그 분리되 구문의 해석을 맡는 클래스를 각각 작성

    해석을 클래스를 작성했기 때문에 여러형태의 언어 구문을 해석

    문법 자체를 캡슐화하여 사용
    언어 구문, 해석, 캡슐화
    iterator
    (반복자)

    요소들을 순차적으로 접근
    컬렉션의 요소들을 순차적으로 접근하고 처리할 수 있음
    집합 객체의 요소들에 대해 순서대로 접근하는 방법 제공
    배열, 배열리스트, 해시 테이블과 같은 객체를 처리하는 데 사용하는 패턴
    서로 다른 집합 객체 구조에 대해 동일한 방법으로 순회

    내부구조를 노출하지 않고 복잡한 객체들의 원소들을 순차적으로 접근 가능하게 해주는 행위 패턴

    모든 항목에 접근하는 방법

    컬렉션 구현 방법 노출 X

    하지만, 그 집합체에 모든 항목에 접근
    i는 반복에서 많이 쓰이는 약어


    Templete method

    (생성의 factory method와 헷갈리면 안됨!)

    알고리즘 (State와 유사)
    하위 클래스 구체 구현
    알고리즘의 핵심적인 골격은 그대로 유지하면서, 일부 단계는 하위 클래스에서 구체적으로 구현

    코드의 양을 줄이고 유지보수를 용이
    하게 하는 패턴

    어떤 처리를 하는 일부분을 서브 클래스로 캡슐화

    전체 수행하는 과정은 바꾸지 않음

    특정 단계에서 수행하는 내역을 바꿈

    추상 클래스에서는 골격을 제공,

    하위 클래스의 메서드에는 세부처리를 구체화하는 방식

    * 상위 구조는 바꾸지 않으면서 서브 클래스로 작업의 일부분 수행
    알고리즘, 서브 클래스, 캡슐화, 추상-골격, 하위-세부처리
    Observer
    *빈출

    상태변화 알림
    객체의 상태 변화를 관찰하고 싶은 다른 객체들에게 자동으로 알림.

    일대다의 객체 의존 관계를 정의하며, 한객체의 상태가 변화되었을 때, 의존관계에 있는 다른 객체들에게 자동적으로 변화를 통지한다.

    한 객체의 상태가 바뀌는지 염탐하다가, 바뀌면 그 객체에 의존하는 객체들에게 연락
    자동으로 내용이 갱신되는 방법
    연락, 갱신
    State

    내부 상태->객체 동작


    객체 내부 상태에 따라 객체의 동작을 변경
    객체 상태에 따라 객체의 행위 내용을 변경해주는 패턴

    객체의 상태를 캡슐화

    캡슐화한 상태를 참조하게함

    상태에 따라 다르게 처리할 수 있도록 행위 내용을 변경
    상태 캡슐화
    visitor
    *빈출

    생성패턴의 빌더와 유사

    새로운 연산 추가
    객체 구조를 변경하지 않고 객체에 새로운 연산 추가

    데이터 구조에서 처리 기능을 분리

    분리한 처리 기능을 별도의 클래스로 만들어둠

    이 클래스의 메서드가 각 클래스를 돌아다니면서 특정 작업을 수행

    객체의 구조는 변경하지 않으면서 기능만 따로 수행할 수 있음

    특정한 구조를 가지는 복합 객체의 각 원소 특성에 따라 동작을 수행할 수 있도록 하는 지원 행위
    새로운 연산 추가, 돌아다님, 기능만 수행
    Command

    요청 객체로 캡슐화
    요청자, 처리자
    요청을 객체로 캡슐화하여 요청자와 처리자를 분리
    명령, 요청자, 클리이언트, 수신자로 구분

    실행기능을 캡슐화 -> 주어진 여러 기능을 실행

    재사용성 높음

    추상 클래스에 메서드를 만들어두고 각 명령에 따라 서브 클래스를 선택되어 실행됨

    *요구사항에 맞게 특정 객체로 캡슐화

    요청자, 처리자
    Strategy
    *빈출

    알고리즘
    알고리즘을 정의하고 같은 알고리즘을 각각 하나의 클래스에 캡슐화필요할때 서로 교환해서 사용할 수 있게 하는 패턴

    동적으로 행위를 자유롭게 바꿀 수 있는 패턴

    행위 객체를 캡슐화하여 동적으로 행위를 자유롭게 변환

    알고리즘을 객체로 캡슐화하고, 알고리즘을 선택하고 실행하는 방법을 제공.
    알고리즘 군
    Memento

    저장하고 복원
    객체의 이전 상태를 저장하고 복원할 수 있도록 함

    클래스설계 관점객체 정보를 저장할 필요
    가 있을 때 적용

    undo 기능을 개발할 때 필요한 패턴

    객체를 이전 상태로 복구시켜야하는 경우, 작업 취소(Undo) 요청 가능
    저장하고 복원, 클래스 관점, Undo
    Chain of Responsibility

    체인형태
    요청을 처리하는 객체들을 체인 형태로 연결하여 요청을 순서대로 전달
    객체는 요청을 처리할 수 있는지 판단하고, 처리할 수 없으면 다음 객체로 전달

    개발 할때, 정적으로 기능을 하드 코딩하면 기능 처리 연결 수정(변경)이 불가함

    이를 동적으로 연결되어 있는 경우에 대해 다르게 처리 될 수 있도록 연결한 디자인 패턴

    한 요청을 2개 이상의 객체에서 처리
    2개 이상의 객체

     

    암기 스토리

    행 미 인 이 템 옵 스 비 코 스 멘 체

    복한 인이 RPG를 하는데, 이 (없)옵스 가지고 정식 코스가 아닌 비코스로가서 멘체스터유나이티드 로고가 있는 갑옷을를 구매했다.

    728x90
    반응형

    댓글