본문 바로가기
Development/DesignPatten

[디자인패턴] DesignPattern01 - AbstractFactory

by 푸민 2015. 8. 7.
반응형

 

안녕하세요 푸민입니다.

개발을 하면서 항상 고민하게 되는것은

어떻게 구조를짤까?

어떤 프레임워크를 설계해서 할까?

좀더 효율적이고 효과적으로 객체를 사용할 수는 없을까?

등등 많은 고민을 합니다.

 

그래서 디자인 패전을 공부하게 되었습니다!

앞으로 천천히 하나씩 공부하며 업로드 하도록 하겠습니다!

 

처음으로 지다인 패턴중 하나인 추상 팩토리를 보겠습니다.

해당 패턴은 객체 생성 패턴 중 하나로 제목 그대로 추상 팩토리를 구성합니다.

 

https://ko.wikipedia.org/wiki/%EC%B6%94%EC%83%81_%ED%8C%A9%ED%86%A0%EB%A6%AC_%ED%8C%A8%ED%84%B4

 

1. MilkFactory 라는 인터페이스를 하나 정의한다. 

MilkFactory는 A등급 우유 만드는 메소드와 B등급 우유를 만드는 메소드를 가지고 있다.

 

MilkA getMilkA() 라는 메소드와

 

MilkB getMilkB() 라는 메소드를 정의한다.
 

2. MilkAMilkB라는 인터페이스를 정의한다. 

MilkA는 String getAName()라는 메소드를 만든다.


MilkB는 String getBName()라는 메소드를 만든다.
 

3. MilkASeoul, MilkABusan, MilkBSeoul, MilkBBusan 객체를 각각 만든다.
 

MilkASeoul이 MilkA를 임플리먼츠하여

String getAName(){

return "A등급 서울우유입니다.";

}

 

MilkBSeoul이 MilkB를 임플리먼츠하여

String getBName(){

return "B등급 서울우유입니다.";

 

MilkABusan이 MilkA를 임플리먼츠하여

String getAName(){

return "A등급 부산우유입니다.";

 

MilkBBusan이 MilkB를 임플리먼츠하여

String getAName(){

return "B등급 부산우유입니다.";

} 

 

4. MilkFactorySeoulMilkFactoryBusan을 각각 MilkFactory를 임플리먼츠하여 만든다.

 
각 지역과 등급에 맞는 우유를 만든어 준다.
 
MilkA getMilkA(){
return new MilkASeoul();
}
 
MilkB getMilkB(){
return new MilkBSeoul();
}
 
이와 같이 부산 공장도 만들어준다.
 
5. 메인에서 원하는 지역 공장을 생성하고 우유를 생성하여 문자열을 찍어준다. 
해당 디자인 패턴을 사용하게 되면 내가 굳이 서울과 부산 우유를 구분하여 생성하지 않아도 서울공장을 생성하는지 부산공장을 생성하는지에 따라 부산우유와 서울우유를 생성할 수 있다. 즉 다른 우유을 바꿀때 공장만 바꿔서 생성해 주면 된다.

 

문의사항은 sj60414@네이트닷컴과 댓글로 해주세요!

반응형

댓글