기술용어/소프트웨어공학

디자인 패턴(Design Pattern)

아이티신비 2024. 6. 29. 09:30

소프트웨어 설계에서 얻은 세세한 경험, 디자인 패턴

정의
  • 각각의 다지인 패턴은 기존 환경 내에서 반복적으로 일어나는 문제들을 설명하고, 그 문제들에 대한 해법의 핵심을 설명하는 것임(이렇게 하면 똑 같은 문제가 반복하지 않고 백만 번 이상 재사용이 가능함)
  • 재사용 가능한 객체지향 설계를 만들기 위해 유용한 공통의 설계 구조로부터 중요 요소들을 식별하여 이들에게 적당한 이름을 주고 추상화 한 것
목적
  • 설계자로 하여금 재사용을 가능하게 하는 설계를 선택하게 하고 재사용을 방해하는 설계는 배제하도록 함, 즉 ‘올바른’ 설계를 빨리 만들 수 있도록 도와줌
요소
1) 패턴 이름(Name) : 설계 문제와 해법을 서술
2) 문제(Problem) : 해결할 문제와 그 배경을 설명함
3) 해법(Solution) : 설계를 구성하는 요소들과 그 요소들 간의 관계, 책임 그리고 협력관계를 서술함
4) 결과(Consequences) : 디자인 패턴을 적용해서 얻는 결과와 장단점을 서술
원칙
  • 캡슐화 : 바뀌는 부분은 캡슐화
  • 위임 : 상속보다는 위임을 활용
  • 인터페이스 : 구현이 아닌 인터페이스에 맞춰서 프로그래밍
  • Loosely Coupling : 서로 상호작용을 하는 객체 사이에서는 가능하면 느슨하게 결합하는 디자인 사용
  • 개방&폐쇄 : 클래스 확장에 대해서는 OPEN, 변경에 대해서는 CLOSE
  • 의존관계 : 추상화된 클래스에 의존하고 구현 클래스 의존은 배제
디자인패턴과 프레임워크 차이점
1) 디자인 패턴이 프레임워크 보다는 더 추상적
. 프레임워크는 구현을정의, 디자인패턴은 예만 코드로 작성
2) 디자인 패턴은 프레임워크에 비해 소규모 아키텍처 요소임
. 일반적으로 프레임웍크는 여러 디자인 패턴을 포함하지만, 디자인 패턴은 프레임웍크를 포함하지 않음
3) 디자인 패턴은 프레임워크보다 구체적이지 않음. 프레임워크는 어떤 특정 어플리케이션을 목표로 함
분류와 종류
1) 객체생성 패턴
- 객체 인스턴스 생성을 위한 패턴으로, 클라이언트와 그 클라이언트에서 생성해야 할 객체 인스턴스 사이의 연결을 끊어주는 패턴이다. 클래스 정의와 객체 생성 방식을 구조화, 캡슐화한 방법을 제시한다.
2) 구조개선 패턴
- 다른 기능을 가진 객체가 협력을 통해 어떤 역할을 수행할 때, 객체를 조직화시키는 일반적인 방식을 제시한다.
- 별도로 구성된 클래스 라이브러리를 통합하는 데 유용하다.
- 생성패턴과 달리 새로운 기능을 구현하기 위해 객체를 구성하는 방식 자체에 초첨이 맞춰져 있다.
3) 행위개선 패턴
- 객체의 행위를 조직화, 관리, 연합하는데 사용되는 패턴이다.
- 객체간의 기능을 배분하는 일과 같은 알고리즘 수행에 주로 이용된다.
- 단지 객체나 클래스에 대한 유형을 정의하는 것이 아니라 그들 간의 연동에 대한 유형을 제시한다.


 

공감과 댓글은 아이티신비에게 큰 힘이 됩니다.

블로그 글이 유용하다면 블로그를 구독해주세요.♥

 

 

 

'기술용어 > 소프트웨어공학' 카테고리의 다른 글

SW Maintenance  (0) 2024.06.30
SW 아키텍처  (0) 2024.06.30
구조기반테스트(Structure Based Technique)  (0) 2024.06.29
경험기반 테스트(Experience Based )  (0) 2024.06.28
TDD(Test-Driven Development)  (0) 2024.06.28