📌 객체생성시 클래스를 분리해 처리하도록 캡슐화 하는 패턴
구현 클래스를 정의한다.
//Shape.java public abstract class Shape { abstract void draw(); } //Circle.java public class Circle extends Shape { @Override void draw() { System.out.println("draw Circle"); } } //Square.java public class Square extends Shape { @Override void draw() { System.out.println("draw Square"); } }
별도의 클래스(factory)에서 하위 클래스를 생성한다
//ShapeFactory.java public class ShapeFactory { public Shape getShape(String shapeType) { switch (shapeType) { case "Circle": return new Circle(); case "Square": return new Square(); default: return null; } } }
조건에 따라 생성된 클래스를 사용한다
//Main.java public class Main { public static void main(String[] args) { ShapeFactory factory = new ShapeFactory(); Shape circle = factory.getShape("Circle"); Shape square = factory.getShape("Square"); circle.draw(); square.draw(); } }