본문 바로가기

수업 내용 정리/오픈소스SW개발방법및도구

11. Design Pattern

Let's reuse not only code but also software design~

Software Design Pattern(s)

  • a general reusable solution to a commonly occuring problem
  • not a finished design
  • a description or template for how to solve a problem 
  • 미리 문제를 해결해본 선배들의 조언이다.
  • object oriented design pattern: relationship and interactions between class or object
  • 개발단계를 고려하면서 pattern을 써야한다. 어떤 언어는 pattern이 다 간단하게 구현되어있을 수도 있고 아예 실현 불가능할 수 도있다.

Adapter Pattern

UML

  • Goal: 30년간 잘돌아가고 있는두 프로그램이 있는데 호환이 안될때 프로그램을 고치지 않아야 할 때
  • Details: 두개의 프로그램이 호환이 안될 때 중간에 adapter를 통해 수정하지 않고 호환시킨다.

Facade Pattern

  • Goal:  문 뒤의 프로그램은 매우 복잡하고 변경가능하다. 하지만 사용자에게는 항상 똑같고 간단한 인터페이스를 제공하는 것
  • Detail: object oriented programming에서 많이 쓰임, 간단한 interface 제공
  • adventage
    • easier to use, understand, and test
    • reduce dependencies of outside code on the inner workings
    • wrap a poorly-designed collection of APIs with a single well designed API

Decorator Pattern

  • Goal: 객체에서 동적으로 아이템을 추가해주거나 제거해주는 것
  • ex) 전투기가 별사탕먹고 무시무시한 화력으로 바뀌고 한방 얻어맞으면 아이템이 뺏기는 시스템

History of Design Pattern

  • 1977 - patterns 개념 제시됨
  • 1987 - 프로그래밍에 pattern을 적용
  • 1994 - Design pattern이 인기를 얻고 Gang of Four라는 사람들에 의해 책으로 출간
  • Code Complete: design pattern이 나오기전 가장 유명했던 책, design pattern 관련 내용을 다루었다.

Criticism about Design Pattern

  • 언어가 발전하면 최신 기술들을 다 지원하게 됨 => design pattern들을 간단하게 지원해줘서 필요성이 떨어짐
  • 잘못쓰면 복잡도만 증가하고 프로그램을 엉망으로 만든다.
  • 업데이트가 안됐다.

책 추천

'수업 내용 정리 > 오픈소스SW개발방법및도구' 카테고리의 다른 글

13. Project Planning & Management  (0) 2023.06.14
12. Opensource License  (0) 2023.06.09
10. Test and Enhancement  (0) 2023.06.07
9. Online Co-work & Eduacation  (0) 2023.06.07