본문 바로가기

2024-08-24 design pattern이란?

codeConnection 2024. 8. 24.

참고 문서

https://www.linkedin.com/pulse/design-patterns-frontend-development-divyansh-singh

 

Design Patterns in Frontend Development

Frontend development is an ever-evolving field with a constant need for maintaining clean, maintainable, and efficient code. To address these challenges, developers turn to design patterns.

www.linkedin.com

https://refactoring.guru/design-patterns/

 

Design Patterns

Design Patterns Design patterns are typical solutions to common problems in software design. Each pattern is like a blueprint that you can customize to solve a particular design problem in your code. Catalog of patterns List of 22 classic design patterns,

refactoring.guru

 

 

그 간 design pattern에 대해서는 신경쓰지 않고 프로젝트를 진행해왔는데 최종프로젝트에서 지금까지 만난 프로젝트와 비교했을 때 꽤나 큰 규모의 프로젝트를 만나고 나서 디자인 패턴에 대해서 알고 싶지 않아도 자연스럽게 알 수 밖에 없었고,

프로젝트 아키텍처의 효율성을 극대화하여 속도와 성능면에서 유리한 서비스를 만들고 싶었기에 design pattern에 관심이 생겼고 추가 학습을 진행하고 있다.

 


디자인 패턴이란?

디자인 패턴의 의미

디자인 패턴이란 프로그맹일 하면서 발생하는 문제들을 해결할 수 있도록 하나의 규약 형태로 만들어 놓은 것을 의미한다.

디자인 패턴은 이러한 문제점들에 대해서 재사용 가능한 해결책을 제시하기도 하고, design issue가 발생했을 때 그 문제를 해결할 수 있도록 도와준다.

디자인 패턴의 장점

디자인 패턴을 개발자가 사용하며 앱을 설계하면 유지 보수가 가능하고(maintainable) 확장이 가능하고(scalable), 에러를 제거할 수 있고 코드의 구성을 개선할 수 있다.

그리고 팀 단위로 협업을 해야 하는 경우 이런 약속된 디자인 패턴을 사용하게 되면 팀원 모두가 이해할 수 있는 코드를 작성할 수 있기 때문에 가독성이 좋아진다. (readable)

 

또 재미있는 장점은 이 디자인 패턴은 웹 개발자만 사용하는 것이 아니라 소프트웨어를 다루는 모든 개발자들이 사용한다는 점이다. 따라서 서로 배우고 사용하는 언어는 다르더라도 패턴의 이름만 알고 있으면 같은 개념으로 이해하고 있기 때문에,

소통을 할 때 디자인 패턴에 대해 이야기하면 다 통한다는 점이다.

 

마지막으로 디자인 패턴을 사용해야 하는 가장 중요한 이유는 이러한 디자인 패턴들은 메모리 사용량을 줄이도록 설계되어 있기 때문에 성능을 최적화 할 수 있다. (optimize performance)

디자인 패턴 사용 시 주의사항

주의할 점은 무조건 다 사용해도 되는 건 아니라는 것이다. 각 디자인 패턴마다 사용해야 하는 상황이 다를 수 있다. 따라서 모든 패턴을 잘 알고 적재적소에 사용하는 것이 중요하다.

 

또한 디자인 패턴 만능주의에 빠지게 되면, 특정 디자인 패턴이 완벽히 내 프로젝트의 문제점을 개선하는 완벽한 해결책이 아닐 수 있는데 개발자가 그 익숙한 패턴에 맞춰서 개발을 해버린다는 점이다.

 

어떤 디자인 패턴을 사용하더라도 프로젝트의 컨텍스트에 맞는 디자인 패턴인지 가려내는 힘이 있어야 한다.

 

If all you have is a hammer, everything looks like a nail.

 

망치만 있으면 모든 게 못으로 보인다는 격언이다.

좋은 도구를 얻게 되면 그 도구의 힘과 권위에 의존하여 모든 문제를 해결할 수 있을 것 같다고 맹신하거나 착각하면

사고가 편협해질 수 있고, 더 좋은 기회를 놓칠 수도 있다는 점을 주의해야 한다.

 

디자인 패턴을 익히고 적용하는 것은 좋지만 이러한 습관에 갇히게 되면, 간단한 코드로 해결할 수 있는 프로젝트에도 디자인 패턴을 적용하려고 해서 먼 길을 돌아기도 한다. 이런 상황을 우리 말로 굳이 하자면 "호미로 막을 것을 가래로 막는다"가 적합할까?

 

디자인 패턴의 종류

여러 패턴이 있지만 웹 개발자가 알고 있어야 하는 패턴은 아래와 같다.

패턴들의 정의를 하나 하나 살펴 보다 보면 용어는 몰라도 자연스럽게 익히게 되는 패턴들이다.

 

1) 싱글톤 패턴

2) 팩토리 패턴

3) 전략 패턴

4) 옵저버 패턴

5) 프록시 패턴과 프록시 서버

6) 이터레이터 패턴

7) 노출모듈 패턴

8) MVC 패턴

9) MVP 패턴

10) MVVM 패턴

 

세부적인 내용을 봐야 개념이 이해가 쉬울 것 같다.

다음부터는 하나씩 공부해보겠다.

댓글