2011년 5월 22일 일요일

What is a Design Patterns?

What Is a Pattern?
반복되는 공통적인 문제에 대하여 가장 적절한 해결책을 제시하는 것

Benefits of Patterns(패턴의 이득)
· 디자인 문제점을 토론하기 위한 높은 레벨의 언어를 제공한다.
· 디자인 문제의 해결책을 제공한다.
· 패턴의 조합은 재사용할 수 있는 아키택쳐를 제공 한다.

디자인 패턴을 적용할 때 제일 중요한 세가지 규칙
· 구현 클래스가 아니라 인터페이스를 가지고 프로그래밍한다. à 인터페이스를 바탕으로 하는 클래스 호출
· 상속(inheritance)이 아니라 위임(delegation)을 주로 사용한다.
· Coupling을 최소화함으로써 추후의 변화를 국부화 한다.  어느 하나의 기능 변화가 전체 클래스 구조를 바꾸거나 혹은 많은 부분에 걸친 변화를 야기한다면 디자인이 초기부터 잘 못 되어진 거라 할 수 있다. 디자인 패턴의 기본 중에 기본은 “coupling을 최소화” 함에 있다.

디자인패턴 카탈로그 기술 형식
  • name(이름) : 패턴의 이름은 패턴 자체의 내용을 효과적으로 전달할 수 있어야 한다.
  • Classification(종류) : 여러 개의 패턴들을 체계적으로 분류한다. (예: 생성, 구조, 행위)
  • Intent(의도) : 이 패턴이 무엇을 하며 어떤 의도로 작성되었으며 무슨 문제를 해결하는 지를 설명하는 간단한 문장
  • Motivation(동기) : 이 패턴이 해결해야 하는 디자인 문제와 그것을 해결하기 위해 클래스와 객체들이 어떻게 사용되는지에 대해 시나리오 형식으로 기술함
  • Applicability(적용시기)
  • Structure(구조) : 패턴에서 문제를 해결하기 위해 사용되는 클래스와 객체의 구조 UML 1.2 다이어그램을 통해서 일반적으로 표현한다.
  • Participants(구성물) : “구조”항목에 포함된 각종 클래스와 객체의 의미와 그 책임을 설명
  • Collaboration(협력관계) : 각 클래스와 객체가 자신에게 맡겨진 책임을 수행하기 위해 서로 메시지를 주고 받는 과정을 묘사함.
  • Consequence(결과) : 패턴이 목적을 달성하기 위해 어떤 면을 해결하는 지를 설명하고 패턴을 적용할 때 발생할 수 있는 문제점과 패턴적용시의 효과, 시스템 상황에 따라서 변동하는 부분들을 기술
  • Implementation(구현) : 패턴을 구현할 때의 고려사항과 힌트, 함정, 테크닉등과 프로그래밍 언어 별로 주의해야할 점들을 기술
  • Sample Code(예제코드) : 특정 프로그래밍 언어로 패턴을 구현한 예제를 보임
  • Known Uses(알려진 사례) : 실제로 사용되는 시스템에서 발견되는 패턴의 예제를 기술
  • Related Patterns(관련 패턴) : 본 패턴과 유사하거나 밀접하게 관련된 다른 패턴을 기술

댓글 없음:

댓글 쓰기

시스템 부팅시 도커 컨테이너 자동 실행

Docker 컨테이너를 운용중인 시스템이 Reboot 되버리면 컨테이너가 자동으로 올라오지 않아 불편해서 시스템 리붓시 컨테이너를 자동으로 시작되게 init 데몬에 등록하기로 했습니다. 서버는 Ubuntu 17.10 Docker는 17.0...