팩토리 메소드 패턴 예제

팩터리 메서드를 추상으로 선언하여 모든 하위 클래스가 메서드의 고유한 버전을 구현하도록 할 수 있습니다. 또는 기본 팩터리 메서드는 일부 기본 제품 형식을 반환할 수 있습니다. 마지막으로, 콘크리트 공장 방법 장난감공장은 수정될 필요가있다. 위치 특정 구성 요소를 추가하는 곳입니다공장. NyToysFactory에 대한 코드를 완성해 보겠습니다: 위의 예제에서는 클라이언트에서 개체 만들기에 대한 형식 선택을 완전히 분리했습니다. 이제 라이브러리는 입력을 기반으로 만들 개체 유형을 결정해야 합니다. 클라이언트는 라이브러리의 팩터리 Create 메서드를 호출하고 개체 만들기의 실제 구현에 대해 걱정할 필요 없이 원하는 형식을 전달하기만 하면 됩니다. 가상 생성자라고도 하는 팩터리 메서드는 라이브러리가 작동하는 아이디어와 관련이 있습니다. 책임의 한 유형은 이러한 개체를 만드는 것입니다. 라이브러리는 개체를 만들어야 하는 시기를 알고 있지만 만들어야 하는 개체의 종류는 라이브러리를 사용하는 응용 프로그램에 만 적용되는 개체입니다. 드래곤 주식회사 돌아가기 CEO는 얼굴에 미소를 지으며 개발자 사무실로 들어오지만 나쁜 소식이 있다는 것을 알고 있습니다. CEO는 드래곤 주식회사가 미국에 여러 공장을 열 것이라고 기쁘게 발표했다.

그들은 다른 주에 위치 할 것이다, 처음 두 뉴욕과 캘리포니아에있을 것입니다. 모든 장난감은 자신의 속성으로 로컬로 생산됩니다, 즉, 장난감 자동차의 동일한 유형에 대한, 뉴욕에서 생산된 것들은 NyCar될 것이며, 캘리포니아에서 사람들은 CaCar될 것입니다. Simple Factory는 이 작업을 개발 팀의 과제로 만듭니다. 그들이해야 할 모든 위치 특정 SimpleFactory 클래스와 위치 특정 ToysFactory 클래스를 만드는 것입니다. Simple Factory는 작업을 단순화하고 개발자의 작업을 쉽게 만듭니다. 하위 클래스는 팩터리 메서드에서 반환되는 개체의 클래스를 변경할 수 있습니다. 코드에서 작업해야 하는 개체의 정확한 형식과 종속성을 미리 모르는 경우 팩터리 메서드를 사용합니다. 추상 팩터리 클래스는 종종 팩터리 메서드 집합을 기반으로 하지만 프로토타입을 사용하여 이러한 클래스에서 메서드를 구성할 수도 있습니다.