카테고리 없음

[정보처리기사] 시험에 자주 나오는 개념: 디자인패턴

nacastle 2023. 7. 15. 16:36

ㅇ 디자인 패턴

  - 개념: 디자인 패턴은 모듈간의 관계 및 인터페이스를 설계할 때 참조할 수 있는 전형적인 해결 방식 또는 예제

 

  - 패턴 종류: 생성패턴, 구조패턴, 행위패턴

    1. 생성패턴: 클래스나 객체의 생성과 참조과정을 정의

     a) 추상 팩토리: 서로 연관 및 의존하는 객체들의 조합을 만드는 인터페이스 제공

     b) 빌더: 작게 분리된 복잡한 인스턴스를 건축하듯이 조립하여 객체 생성

     c) 팩토리 메소드: 상위 클래스에서 객체를 생성하는 인터패이스 정의하고, 하위 클래스에서 객체 생성

     d) 프로토타입: 원본 객체를 복제하는 방법으로 객체 생성

     e) 싱글톤: 하나의 객체 생성해서 이 객체를 어디서든 참조할수 있도록 함

 

    2. 구조패턴: 구조가 복잡한 시스템을 개발하기 쉽도록 클래스나 객체들을 조합

     a) 어댑터: 호환성이 없는 클래스들의 인터페이스를 다른 클래스가 이용할 수 있도록 호환시켜주는 패턴. 기존에 생성된 클래스를 재사용할 수 있도록 중간에서 맞춰주는 역할을 하는 인터패이스를 만드는 패턴

     b) 브리지: 구현부와 추상층을 분리(기능과 구현 클래스를 연결)

     c) 컴포지트(합성): 객체들을 트리 구조로 구성해, 디렉터리 안에 디렉터리가 있듯이 복합 객체 안에 복합 객체가 포함되는 구조 구현 

     d) 데코레이터: 기존에 구현되어 있는 클래스에 필요한 기능을 추가해 나가는 패턴

     e) 퍼싸드(Facade): 복잡한 시스템에서 단순한 상위 인터페이스를 제공함으로써 사용자와 시스템 간 또는 여타 시스템과의 결합도 낮춤

     f) 플라이웨이트: 다수의 객체로 생성될 경우, 모두가 갖는 본질적인 요소를 클래스화하여 공유함으로써 메모리 절약, 클래스 경량화

     g) 프록시: 실제 객체에 대한 대리 객체로 실체 객체에 대한 접근 이전에 필요한 행동을 취할 수 있게 만듦, 접근이 어려운 객체와 여기에 연결하려는 객체 사이에서 인터페이스 역할을 수행하는 패턴

 

    3. 행위패턴: 클래스나 객체들이 서로 상호작용하는 방법이나 책임 분배방법을 정의

     a) 책임연쇄: 요청을 처리할 수 있는 객체가 둘 이상 존재하여, 한놈이 처리 못하면 다른 놈이 처리하게끔 하는 패턴

     b) 커맨드: 실행될 기능을 캡슐화. 하나의 클래스에 메서드를 만들어, 각 명령이 들어오면 그에 맞는 서브클래스가 선택되어 실행

     c) 인터프리터: 여러 형태의 언어 구문을 해석할 수 있게 만드는 디자인 패턴

     d) 반복자(Iterator): 접근이 잦은 객체에 대해 동일한 인터페이스를 사용하도록 하는 패턴. 집합체 안에 들어있는 모든 항목에 반복자를 사용하여 접근할 수 있는 패턴

     e) 중재자(Mediator): 객체의 수가 너무 많아진 경우, 중간에 이를 통제하고 지시하는 중재자를 둠. 수많은 객체들 간의 복잡한 상호작용을 캡슐화하여 객체로 정의하는 패턴

     f) 메멘토: ctrl+z와 같은 되돌리기 기능을 개발할때 주로 이용함 (객체의 정보를 저장할 필요가 있을때)

     g) 옵서버: 한 객체의 상태가 변화하면 객체에 상속되어 있는 다른 객체들에게 변화된 상태를 전달하는 패턴

     h) 상태(State): 객체의 상태에 따라 동일한 동작을 다르게 처리할때 사용하는 패턴

     i) 전략(Strategy): 알고리즘들을 개별적으로 캡슐화하여 상호교환 할수있게 정의하는 패턴

     j) 템플릿 메소드: 상위클래스에서 골격을 정의하고 하위클래스에서 세부처리를 구체화하는 구조의 패턴. 유사한 서브 클래스를 묶어 공통된 내용을 상위클래스에서 정의.

    k) 방문자(Visitor): 각 클래스에서 처리 기능을 분리하여 별도의 클래스로 구성하는 패턴. 분리된 처리기능은 각 클래스를 방문하여 수행

 

 

 

cf) 외우기 어려운 용어: 퍼싸드, 플라이웨이트, 중재자, 템플릿 메소드, 책임연쇄

 

     

 

반응형