[Design Pattern] 행동 패턴 - 옵저버 패턴(Observer Pattern)
·
Computer Science/Design Pattern
옵저버 패턴(Observer Pattern)이란? 옵저버패턴(Observer Pattern)이란 객체의 상태 변화를 관찰하는 옵저버들(관찰) 목록을 객체에 등록하여 상태 변화가 있을 때마다 notify 메서드 등을 통해 객체가 직접 목록의 각 옵저버에게 통지하도록 하는 디자인 패턴이다. 어떤 객체의 상태가 변할 때 그와 연관된 객체 들에게 알림을 보내는 디자인 패턴 이라고 생각하면 된다. 옵저버 패턴에는 주체 객체와 상태의 변경을 알아야 하는 관찰 객체(Observer Object)가 존재하며 이들의 관계는 1:1이 될 수도 있고 1:N이 될 수도 있다. 주로 분산 이벤트 핸들링 시스템을 구현한다. 발행/ 구독 모델로 알려져 있기도 하다. notify 함수는 관찰 대상이 발행한 메시지 이외에, 옵저버 자..
[Design Pattern] 생성 패턴 - 싱글톤 패턴(Singleton Pattern)
·
Computer Science/Design Pattern
싱글톤 패턴(Singleton Pattern)이란? 싱글톤 패턴이란 단 하나의 유일한 객체를 만들기 위한 코드 패턴이다. 쉽게 말하자면 메모리 절약을 위해, 인스턴스가 필요할 때 똑같은 인스턴스를 새로 만들지 않고 기존의 인스턴스를 가져와 활용하는 기법을 말한다. 즉, 프로그램 시작부터 종료 시점까지 어떤 클래스의 인스턴스가 메모리 상에 단 하나만 존재할 수 있게 하고 이 인스턴스에 대해 어디에서나 접근할 수 있도록 하는 패턴이다. 우리가 전역 변수라는 걸 만들어 이용하는 이유는, 똑같은 데이터를 메서드마다 지역 변수로 선언해서 사용하면 무의미하기도 않고 낭비이기 때문에, 전역에서 한번만 데이터를 선언하고 가져와 사용하면 효율적이기 때문이다. 이러한 개념을 그대로 클래스에 대입한 것이 싱글톤 패턴이라고 ..
디자인 패턴(Design Pattern)이란?
·
Computer Science/Design Pattern
디자인 패턴(Design Pattern)이란? 소프트웨어 개발 방법으로 사용되는 디자인패턴(Desigin Pattern)은 과거의 소프트웨어 개발 과정에서 발견된 설계의 노하우를 축적하여 그 방법에 이름을 붙여서 이후에 재사용하기 좋은 형태로 특정 규약을 만들어서 정리한 것이다. 이는 코드에서 반복되는 디자인 문제들을 해결하기 위해 맞춤화할 수 있는 미리 만들어진 청사진과 비슷하다. 표준화된 라이브러리들이나 함수들은 코드에 복사해 사용하지만 패턴들을 붙여넣기식으로 사용할 수 없다. 패턴은 재사용할 수 있는 코드 조각이 아니라 특정 문제를 해결하는 방식을 알려주는 일반적인 개념이다. 패턴은 알고리즘과 자주 혼동된다. 왜냐하면 두 개념 모두 알려진 문제에 대한 일반적인 해결책을 설명하기 때문입니다. 알고리즘..
1.3.2.3. 관계(집합 관계)
·
Computer Science/Design Pattern
JAVA 객체지향 디자인 패턴 정리 UML 연관 관계의 특별 경우로 전체와 부분의 관계를 명확하게 명시하고자 할 때 사용한다. 1. 집약 관계(aggregation) 한 객체가 다른 객체를 포함하는 것 '부분'을 나타내는 객체를 다른 객체와 공유할 수 있다. '전체'를 가리키는 클래스 방향에 빈 마름모로 표시 전체 객체의 라이프타임과 부분 객체의 라이프타임은 독립적이다. 전체 객체가 메모리에서 사라진다 해도 부분 객체는 사라지지 않는다. // Ex) 생성자에서 참조값을 인자로 받아 필드를 세팅한다. public class Computer { private MainBoard mb; private CPU c; //생성자 public Computer(MainBoard mb, CPU c) { this.mb = ..
1.3.2.2 관계(일반화 관계)
·
Computer Science/Design Pattern
JAVA 객체지향 디자인 패턴 정리 2. 일반화 관계 한 클래스가 다른 클래스를 포함하는 상위 개념일 때 두 클래스 사이에는 일반화 관계가 존재한다. 객체 지향 개념에서는 일반화 관계를 상속 관계("is a kind of" 관계)라고 한다. 부모 클래스 추상적인 개념 (실제로 존재하지 않는다.) 삼각형 표기사 있는 쪽 가전 제품 자식 클래스 구체적인 개념 삼각형 표시가 없는 쪽 세탁기, TV, 식기 세척기 '세탁기'is a kind of '가전제품' 'TV' is a kind of '가전 제품' '식기 세척기' is a kind of '가전 제품' 부모 클래스는 자식 클래스의에게 공통 속성이나 연산을 제공하는 틀이다. 추상 클래스 추상 메소드를 하나 이상 가지는 클래스 추상 메소드 부모 클래스에서 구현되..
1.3.2.1 관계(연관 관계)
·
Computer Science/Design Pattern
JAVA 객체지향 디자인 패턴 정리 UML에서 제공하는 클래스들 사이의 관계 1. 연관 관계 가령 "교수 (Professor 클래스)가 학생 (Student 클래스)을 상담한다."라는 사실은 밑의 그림처럼 나타낸다. 한 클래스가 다른 클래스와 연관 관계를 가지면 각 클래스의 객체는 해당 연관 관계에서 어떤 역할을 수행하게 된다. 두 클래스 사이의 연관 관계가 명확한 경우에는 연관 관계 이름을 사용하지 않아도 된다. 역할 이름은 실제 프로그램을 구현할 때 연관된 클래스의 객체들이 서로를 참조할 수 있는 속성의 이름으로 활용할 수 있다. 연관 관계는 방향성을 가질 수 있다. 양방향은 실선, 단방향은 화살표로 표시한다. 화살표 단방향 연관 관계 한 쪽은 알지만 다른 쪽은 상대방의 존재를 모른다. 사람(Pers..