2009년 10월 7일 수요일

Prototype Pattern

Prototype Pattern?

▪ 종류가 너무 많아 클래스로 정리되지 않는 경우
  : 취급하는 오브젝트의 종류가 너무 많아서 각각을 별도의 클래스로 만들어 다수의 소스 파일을
    작성해야 하는 경우
▪ 클래스로부터 인스턴스 생성이 어려운 경우
  : 생성하고 싶은 인스턴스가 복잡한 작업을 거쳐 만들어지기 때문에 클래스로부터 만들기가 매우
    어려운 경우
▪ framework와 생성할 인스턴스를 분리하고 싶은 경우
  : 인스턴스를 생성할 때의 framework를 특정 클래스에 의존하지 않도록 만들고 싶은 경우

☞ Prototype Pattern
☞ 원형이 되는 인스턴스, 모범이 되는 인스턴스를 기초로 새로운 인스턴스를 만드는 것


이번에는 예제부터 해보겠습니다.

 

예제프로그램


Product 인터페이스

펼쳐두기..

: Product 인터페이스는 ICloneable 인터페이스를 상속
  이부분에서 상속이라고해야할지.. implements라고 해야할지 헷갈렸었다. 그런데 간단명료하게 알려준 분이 네이버 지식인에 계셨다.. 하핫..  Implements/extends의 차이

펼쳐두기..


Manager 클래스

펼쳐두기..


MessageBox 클래스

펼쳐두기..


UnderlinePen 클래스

펼쳐두기..


Main 클래스

펼쳐두기..

 

 : Java와 C#이 다른점이 좀 있어서 C#으로 바꾸는데 좀... 짜증스러웠다..;; 어쨌든.. 아마도.. 이후의 더 복잡한 것을 c#으로 할려면 더 많이 바꿀필요가 있겠지만.. 이참에.. JAVA소스를 C#소스로 바꾸는 프로그램이나 만들까부다..;; 쉽진 않겠지만.. 아무튼.

 

Prototye 패턴의 등장인물

 

Prototype 패턴의 클래스 다이어그램

Prototype(원형)의 역할

인스턴스를 복사하여 새로운 인스턴스를 만들기 위한 메소드를 결정

 

ConcretePrototype(구체적인 원형)의 역할

인스턴스를 복사해서 새로운 인스턴스를 만드는 메소드를 실제로 구현

 

Client(이용자) 역할

인스턴스를 복사하는 메소드를 이용해서 새로운 인스턴스를 만듬

 

참고문헌 : Java언어로 배우는 디자인 패턴 입문(영진닷컴)

댓글 없음:

댓글 쓰기