2022. 10. 3. 00:58ㆍProgramming/디자인 패턴
디자인 패턴
건축학 or 컴퓨터 과학에서 사용되는 용어, 설계 문제에 대한 해답을 문서화하기 위해 고안된 방식이다.
이 중에서 공부하면서 정리할 부분은 바로 소프트웨어 개발에서 말하는 디자인 패턴을 공부하고 기록할 예정이다
https://terms.naver.com/entry.naver?docId=3532958&cid=58528&categoryId=58528
Gof 디자인 패턴
대부분 그렇지만 소프트웨어를 설계할 때도 경험만큼 확실한 것은 없다. 그러나 모든 사람이 숙련된 설계 경험자일 수는 없다. 그렇다면 경험이 적은 사람들이 설계를 잘할 수 있는 방법은 없을
terms.naver.com
디자인 패턴
위키 - 소프트웨어 디자인 패턴 - 위키백과, 우리 모두의 백과사전 (wikipedia.org) |
소프트웨어 디자인 패턴은 프로그램 개발에서 자주 나타나는 과제를 해결하기 위한 방법 중 하나로, 과거의 소프트웨어 개발 과정에서 발견된 설계의 노하우를 축적하여 이름을 붙여, 이후에 재이용하기 좋은 형태로 특정의 규약을 묶어서 정리한 것 |
각각의 상황에 맞는 디자인 패턴이 존재하며, 이를 상황에 맞게 사용을 해야 한다.
- 생성
- 객체를 생성과 변경으로 시스템에 끼치는 영향 최소화 및 코드 유연성 증
- • factory method
• singleton
• prototype
• builder
• abstraction factory
- • factory method
- 객체를 생성과 변경으로 시스템에 끼치는 영향 최소화 및 코드 유연성 증
- 구조
- 프로그램 내의 자료구조나 인터페이스 구조 등 구조를 설계할 때 사용/활용하는 패턴
- 클래스의 구성을 통해 더 큰 객체를 표현할 수 있게 된다
- • adapter
• composite
• bridge
• decorator
• facade
• flyweight
• proxy
- • adapter
- 행동
- 반복적으로 사용되는 객체들의 상호작용을 패턴화
- 각 객체의 상호작용과 역할을 분산시킨다
- • template method
• interpreter
• iterator
• observer
• strategy
• visitor
• chain of responsibility
• command
• mediator
• state
• memento
- • template method
- 동시 실행
디자인 패턴은 분류되어 그룹화되어서 정리가 되어있다. 이 중 구조 패턴을 시작을 하면서 추후에 다른 그룹화된 패턴에도 접근을 하는 식으로 공부를 진행할 예정이다.
# 디자인 패턴의 경우 명확하게 정답이 있는 것이 아닌 본인이 진행하고자 하는 프로젝트의 상황에 맞춰 적용하면 된다.
장점
- 개발자 간의 정해진 유형의 코드로 인한 원활한 소통
- 소프트웨어 구조 설계 및 파악 용이
- 재사용을 통해 반복되는 부분 제거 및 시간 단축
단점
- 객체지향 설계 및 구현
안티 패턴
디자인 패턴처럼 많이 사용되는 패턴이지만 그 사용에 있어서 비효율적이거나 혹은 비생산적인 패턴을 의미한다.
여기서 말하는 비생산성이란 성능, 가독성, 유지보수 등 코드의 유지보수 및 성능 향상 등, 코드의 발전에 마이너스적인 요소를 뜻한다. 이와 같은 안티 패턴도 이번 디자인 패턴을 공부하면서 같이 추가적으로 공부하고 기록할 예정이다.