ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 소프트웨어 디자인 패턴
    IT용어 및 개념 정리 2019. 5. 19. 09:32

    정의1

    소프트웨어 디자인 패턴(software design pattern)은 소프트웨어 공학에서 소프트웨어 디자인에서 특정 문맥에서 공통적으로  발생하는 문제에 대해 재사용 가능한 해결책이다. 소스나 기계코드로 바로 전환될 수 있는 완성된 디자인은 아니며, 다른 상황에 맞게 사용될 수 있는 문제들을 해결하는데에 쓰이는 서술이나 템플릿이다. 디자인 패턴은 프로그래머가 어플리케이션이나 시스템을 디자인할 때 공통된 문제들을 해결하는데에 쓰이는 형식화 된 가장 좋은 관행이다.

    출처:위키북스

     

    정의2

    객체 지향 프로그래밍 설계를 할 때 자주발생하는 문제들을 피하기 위해 사용되는 패턴.

     

    여러 사람이 협업해서 개발할 때 다른 사람이 작성한 코드, 기존에 존재하는 코드를 이해하는것은 어렵다.

    이런 코드를 수정하거나 새로운 기능을 추가해야 하는데 의도치 않은 결과나 버그를 발생시키기 쉽고 성능을 최적화 시키기도 어렵다. 이로 인한 시간과 예산이 소모된다. 

     

    디자인 패턴은 의사소통 수단의 일종으로써 이런 문제를 해결해준다. 예를 들어 문제 해결의 제안에 있어서도 "기능마다 별로의 클래스를 만들고, 그 기능들로 해야할 일을 한 번에 처리해주는 클래스를 만들자"라고 제안하는 것 보다"Facade 패턴을 써보자"라고 제안하는쪽이 이해하기 쉽다. 

     

    일반 프로그래머가 만나는 문제가 지구상에서 유일한 문제일 확률은 거의 없다. 이미 수많은 사람들이 부딪힌 문제다. 따라서 전문가들이 기존에 해결책을 다 마련해 놓았다.

     

    다만 과유불급, 디자인 패턴을 맹신한 나머지 모든 문제를 패턴을 써서 해결하려 드는 패턴병에 걸리지 않도록 조심하자.

    디자인 패턴은 알고리즘이 아니다. 어찌보면 (언어중립적) 코딩 방법론에 가깝다고 볼수도 있다. 같은 이름의 패턴이 다른 언어로 구현된 모습을 보면 이에 대해 좀 더 쉽게 이해할 수 있을것이다.

    출처:나무위키

     

     

     

     

     

     

     

    네이버나 구글에 검색하면 가장 먼저나오는 자바 디자인 패턴 책이다. 

    이 책 어떠한지는 추후 구매시 따로 리뷰하도록 하겠습니다.

    'IT용어 및 개념 정리' 카테고리의 다른 글

    의존성 주입(Dependency Injection, DI), 결합도(Coupling), 응집도(Cohesion)  (0) 2019.04.25
    컴포넌트  (0) 2018.10.24
    cgroups  (0) 2018.10.24
    샌드박스  (0) 2018.10.24

    댓글

© 2018 T-Story. All right reserved.