ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • GoF Design Pattern
    ios/Etc 2022. 3. 6. 15:47
    728x90

    프로그래밍 디자인 패턴이란?

    • GoF(Gang of Four의 약자로 "디자인 패턴"의 저자들 Erich Gamma, Richard Helm, Ralph Johnson, John Vlisside)

     "특정한 상황에서 일반적 설계문제를 해결하기 위해 상호교류하는 수정 가능한 객체와 클래스들에 대한 설명이다."

    • 라만(C. Larman)

    "숙련된 객체지향 개발자 및 기타 소프트웨어 개발자는 소프트웨어 개발의 가이드라인이 되는 일반적인 원칙들과 관용적인 해결책들의 레퍼토리를 구축한다. 패턴은 이러한 원칙들과 관용적 해결책들이 문제와 해결책을 기술하는 구조적인 형태로 체계화되고 명명된 것이다."

     

    소프트웨어를 설계할 때 특정 상황에서 자주 사용하는 패턴을 정형화한 것이며, 좋은 소프트웨어 설계를 위한 개발자들의 경험적 산물이라고 할 수 있다.

     

    프로그래밍 디자인 패턴을 쓰는 이유

    1. 의사소통과 가독성에 도움을 준다. 디자인 패턴을 알고 있는 설계자들은 특정 문제에 대해 공통으로 알고 있는 패턴을 이용해 해결책에 대해 논의를 할 수 있기 때문에 더욱 원활하게 의사소통할 수 있고, 잘 정리된 패턴은 나중에 버그를 찾거나 수정을 하는데 많은 도움을 준다.
    2.  검증된 개발 패러다임을 제공하여 개발 프로세스의 속도를 높일 수 있으며, 재사용이 가능해 시간적으로 도움이 되고, 새로 코드를 작성할 때 발생하는 문제를 방지하여 경제적이다. 또한, 코드의 수준을 한 단계 높여 주고 적은 수의 클래스로 원하는 목적을 달성할 수 있는 환경이 제공된다.
    3. 좋은 설계나 아키텍처가 패턴이라는 이름으로 명명되어 있어 개발자는 그 패턴의 이름만으로도 그 소프트웨어의 구조를 알 수 있다. 이를 바탕으로 이전의 소프트웨어 개발에서 사용한 설계나 구조를 쉽게 이해할 수 있고, 새로운 소프트웨어로 빠르게 적용할 수 있어서 소프트웨어 재사용을 쉽게 해준다.

     

    디자인 패턴의 종류

    생성 패턴(Creational Patterns) 구조 패턴(Structual Patterns) 행위 패턴(Behavioral Patterns)
    - 싱글턴(Singleton)
    - 추상 팩토리(Abstract Factory)
    - 빌더(Builder)
    - 팩토리 메서드(Factory Methods)
    - 프로토타입(Prototype)
    - 어댑터(Adapter)
    - 브리지(Bridge)
    - 컴퍼지트(Composite)
    - 데커레이터(Decorator)
    -퍼사드(Facade)
    -프라이웨이트(Flyweight)
    -프록시(Proxy)

    - 책임 연쇄(Chain of Responsibility)
    - 커맨드(Command)
    - 인터프리터(Interpreter)
    - 이터레이터(Iterator)
    - 미디에이터(Mediator)
    - 메멘토(Memento)
    - 옵저버(Observer)
    - 스테이트(State)
    - 스트래티지(Strategy)
    - 템플릿 메서드(Template Method)
    - 비지터(Visitor)

    생성 패턴(Creational Patterns)

    • 객체 생성에 관련된 패턴
    • 객체의 생성과 조합을 캡슐화해 특정 객체가 생성되거나 변경되어도 프로그램 구조에 영향을 크게 받지 않도록 유연성을 제공

    구조 패턴(Structual Patterns)

    • 클래스나 객체를 조합해 더 큰 구조를 만드는 패턴
    • 예를 들어 서로 다른 인터페이스를 지닌 2개의 객체를 묶어 단일 인터페이스를 제공하거나 서로 다른 객체들을 묶어 새로운 기능을 제공하는 패턴

    행위 패턴(Behavioral Patterns)

    • 객체나 클래스 사이의 알고리즘이나 책임 분배에 관련된 패턴
    • 한 객체가 혼자 수행할 수 없는 작업을 여러개의 객체로 어떻게 분배하는지, 또 그렇게 하면서도 객체 사이의 결합도를 최소화하는 것에 중점을 두는 방식
    728x90

    'ios > Etc' 카테고리의 다른 글

    @escaping  (0) 2022.05.14
    Concurrency & Threading  (0) 2022.04.08
    Swift 메모리 관리: ARC  (0) 2022.03.22
    Cocoa란?(Feat. iOS, macOS)  (0) 2022.03.05
    Life Cycle  (0) 2022.02.23

    댓글

oguuk Tistory.