슈퍼 클래스에 추상 팩토리 메서드가 선언되어 있고, 각 서브에서 해당 메서드를 구현하여 서브 클래스에 특화된 객체를 생성함
다양한 객체 유형을 생성하고, 확장할때 강력한 방법
// 도형 인터페이스 (Product)classShape{draw(){thrownewError("This method should be overridden in concrete shapes.");}}// 구체적인 도형 클래스들 (Concrete Products)classCircleextendsShape{draw(){return"Circle is drawn";}}classSquareextendsShape{draw(){return"Square is drawn";}}classTriangleextendsShape{draw(){return"Triangle is drawn";}}// 팩토리 메서드 패턴을 구현한 팩토리 클래스 (Creator)classShapeFactory{createShape(shapeType){switch(shapeType){case"circle":returnnewCircle();case"square":returnnewSquare();case"triangle":returnnewTriangle();default:thrownewError("Invalid shape type");}}}// 클라이언트 코드constfactory=newShapeFactory();constcircle=factory.createShape("circle");console.log(circle.draw());// "Circle is drawn"constsquare=factory.createShape("square");console.log(square.draw());// "Square is drawn"consttriangle=factory.createShape("triangle");console.log(triangle.draw());// "Triangle is drawn"
Leave a comment