추상 팩토리 패턴
추상 팩토리 패턴은 관련있는 객체를 가상화 시키는 겁니다.
위처럼 중간 부분에 가상화를 시켜서 사용한다는 것이죠.
우선 Wheel과 Body를 만듭시다.
package abst;
public interface Body {
//바디 메서드
}
package abst;
public interface Wheel {
//휠 기능 메서드
}
이를 생산해주는 BikeFactory를 만들어줍시다.
package abst;
public interface BikeFactory {
public Body createBody();
public Wheel createWheel();
}
그럼 이 인터페이스를 이제 구체적인 자전거를 만들어줄 때 구현해주면 됩니다.
예를들어 삼X 자전거를 만들기위해서
SamBody와 SamWheel 그리고 SamFactory를 만들어줍니다.
그리고 GTBike를 만들기 위해서
GtBody와 GtWheel 그리고 GtFactory를 만들어줍니다.
package sam;
import abst.Body;
public class SamBody implements Body{
}
package sam;
import abst.Wheel;
public class SamWheel implements Wheel {
}
package sam;
import abst.BikeFactory;
import abst.Body;
import abst.Wheel;
public class SamFactory implements BikeFactory{
@Override
public Body createBody() {
// TODO Auto-generated method stub
return new SamBody();
}
@Override
public Wheel createWheel() {
// TODO Auto-generated method stub
return new SamWheel();
}
}
구현을 해주면 완성입니다. GtBike도 마찬가지로 해주면 됩니다.
만약 여러 자전거들이 있으면 Main에서 하나만 바꿔주면 모두 사용가능합니다.
package main;
import abst.BikeFactory;
import abst.Body;
import abst.Wheel;
import gt.GtBikeFactory;
import sam.SamFactory;
public class Main {
public static void main(String[] args) {
BikeFactory factory = new SamFactory();
// BikeFactory factory = new GtBikeFactory();
Body body = factory.createBody();
Wheel wheel = factory.createWheel();
System.out.println(body.getClass());
System.out.println(wheel.getClass());
}
}
즉 factory에서 SamFactory()인지 GtBikeFactory()인지만 바꿔주면 됩니다.
'프로그래밍 언어 > Java' 카테고리의 다른 글
디자인패턴 - 추상 팩토리 패턴(2) (0) | 2019.09.06 |
---|---|
디자인패턴 - 빌드패턴(2) (0) | 2019.08.30 |
디자인패턴 - 빌더패턴(1) (0) | 2019.08.30 |
디자인패턴-얕은복사&깊은복사 (0) | 2019.08.26 |
디자인패턴- 프로토타입 패턴 (0) | 2019.08.26 |