반응형
객체 지향 디자인 패턴의 기본 원칙 중 '확장에 있어서는 열려 있어야 하고 수정에 있어서는 닫혀 있어야 한다'를 알고 있을 거예요. 수정이 발생할 가능성이 높은 부분은 따로 분리하여 관리하는 것이 좋습니다. 팩토리 패턴은 객체의 생성을 담당하는 클래스를 한 곳에 모아서 관리하는 것입니다.
예시를 통해서 어떻게 팩토리 패턴을 이용할 수 있는지 경험해 보겠습니다. 아래 예시는 도형의 모양을 만드는 것을 팩토리 패턴으로 만들어 본 것입니다.
1 단계 : Shape 인터페이스 생성
public interface Shape {
void draw();
}
2 단계 : Shape 구현
public class Rectangle implements Shape {
@Override
public void draw() {
System.out.println("Inside Rectangle::draw() method.");
}
}
public class Square implements Shape {
@Override
public void draw() {
System.out.println("Inside Square::draw() method.");
}
}
public class Circle implements Shape {
@Override
public void draw() {
System.out.println("Inside Circle::draw() method.");
}
}
3 단계 : 객체를 생성하는 팩토리 생성
public class ShapeFactory {
//use getShape method to get object of type shape
public Shape getShape(String shapeType){
if(shapeType == null){
return null;
}
if(shapeType.equalsIgnoreCase("CIRCLE")){
return new Circle();
} else if(shapeType.equalsIgnoreCase("RECTANGLE")){
return new Rectangle();
} else if(shapeType.equalsIgnoreCase("SQUARE")){
return new Square();
}
return null;
}
}
4 단계 : 팩토리 사용해 보기
public class ShapeFactory {
//use getShape method to get object of type shape
public Shape getShape(String shapeType){
if(shapeType == null){
return null;
}
if(shapeType.equalsIgnoreCase("CIRCLE")){
return new Circle();
} else if(shapeType.equalsIgnoreCase("RECTANGLE")){
return new Rectangle();
} else if(shapeType.equalsIgnoreCase("SQUARE")){
return new Square();
}
return null;
}
}
참고
- https://www.tutorialspoint.com/design_pattern/factory_pattern.htm
반응형
'IT > Java' 카테고리의 다른 글
Map 처리 (0) | 2022.12.19 |
---|---|
Arrays.asList() vs ArrayList() (0) | 2022.12.19 |
[함수형 데이터 처리] 스트림 (2) | 2022.09.25 |
기본형과 참조형 변수 (0) | 2022.09.04 |
동작 파라미터화 (0) | 2022.08.13 |