'design pattern'에 해당되는 글 2건

1. Adapter 패턴이란


이미 구현되어 있는 코드가 있는데, 둘이 연결 좀 시켜주고 싶을 때가 있죠. 어떤 좋은 메서드가 있는데, 인자로 A라는 형식을 받습니다. 근데, 이미 구현되어 있는 코드에는 B라는 형식으로 구현되어 있습니다. 이럴 때, B를 A의 형식으로 바꿔주면 좋은 메서드를 써먹을 수 있습니다. Adapter 패턴은 어떤 오브젝트를 캐스팅이 불가능한 다른 클래스의 형태로 변환시켜주는 것입니다.


2. 따라하기


// Adapter Class


//test 클래스

 

 //결과 


우리가 최종적으로 쓰고자하는 것은 nextObject() 입니다. 그 녀석은 인자로 Enumeration을 받고 있지요. 

그러나 우리가 가지고 있는 것은 Iterator입니다. IteratorToEnumeration 클래스는 Iterator를 받아서 Enumeration 으로 변경시켜줍니다. 

A to B의 형태를 가지는 Adapter는 A를 멤버변수로 가지고 B를 구현합니다.

즉, IteratorToEnumeration 클래스가 이 역활을 하고 있습니다. IteratorToEnumeration 이클래스가 아답터 클래스 입니다.


3. JAVA API에 있는 Adapter 패턴 을 이용한 클래스들


이클립스나 인텔리 제이에서 저 소스들을 파헤쳐 가면서 어떻게 adapter 패턴들을 사용했는지 한번 살펴보시기 바랍니다.
시간이 될때 저도 저 클래스들이 apater 패턴을 사용하는가를 작성하겠습니다.


블로그 이미지

낭만가을

,

1. Factory  패턴 이란


아주 중요한 패턴중에 하나 입니다. Factory 패턴은 creational pattern  에 속하는 패턴입니다.

Factory 패턴은 객체생성로직 없이 객체를 만들어 내는 패턴입니다.. 인터페이스를 통해 만들어진 객체를 참조 하죠.


쉽게 설명해드리겠습니다.  factory 는 한국어로 공장이란 뜻이죠.  즉 객체를 만들어내는 공장 입니다.  

객체 선언은 보통 new 객체() 이런식으로 하죠. factory는 내부에서 그런 일을 해줍니다. 즉 factory를 가져다가 쓰는 부분에서는 new 객체()와 같은 식으로 변수를 선언할 필요가 없습니다. Abstract class나 인터페이스에 대해서 다양한 하위 구현체가 있을 경우에 사용하면 좋습니다. 사용법은 Factory.create(인자는 맘대로) 와 같이 됩니다. 


실무에서 자주 쓰이는 패턴중 하나이니 아래와 같이 천천히 따라해보도록 하죠.


2. 따라하기


// animal 인터페이스를 만듭니다. 기본이 되는 interface 죠. 모든 디자인 패턴은 interface 를 사용한다 해도 과언이 아닙니다.


// Cat 클래스를 만듭니다.


// Cow 클래스를 만듭니다.


// Dog 클래스를 만듭니다.


// animal 을 만들어내는  AnimalFactory 클래스를 만든다. 

//( 이 class 가 핵심 입니다. factory 패턴을 구현한곳이죠. 이해하기 힘드시다면 이 class 만 30번 보시면 이해가 되실겁니다.)


// 자 테스트를 한번 해볼까요.

 

//결과


3. Factory 의 이해 

위의 결과와 같이 Animal interface 를 이용해서 각자 다른 소리를 내는 3개의 클래스를 만들어 봤습니다.

AnimalFactory 클래스에서는 각 동물들의 이름을 받아서 클래스를 만들어 냈습니다. 즉 팩토리 패턴을 구현해 놓은 클래스 입니다.


테스트를 실행하는 main 클래스 안에는 new 라는 구문 자체가 없습니다 팩토리 패턴은. 정확히 어떤 클래스의 인스턴스인지 신경쓰지 않고 구현할 수 있는 장점이 있습니다. 객체 타입이 굉장히 유연해 질 수 있죠.


이것으로 아주 쉽게 배우는 factory 패턴을 마치고자 합니다. 



블로그 이미지

낭만가을

,