팩토리 메소드 예제

팩터리 메서드(클라이언트 코드라고도 함)를 사용하는 코드는 다양한 하위 클래스에서 반환되는 실제 제품 간의 차이를 표시하지 않습니다. 클라이언트는 모든 제품을 추상 전송으로 처리합니다. 클라이언트는 모든 전송 개체에 배달 메서드가 있어야 한다는 것을 알고 있지만 정확히 어떻게 작동하는지는 클라이언트에게 중요하지 않습니다. 위의 예제에서는 Client에서 개체 만들기에 대 한 형식의 선택을 완전히 분리 했습니다. 이제 라이브러리는 입력을 기반으로 만들 개체 유형을 결정해야 합니다. 클라이언트는 라이브러리의 팩터리 Create 메서드를 호출하고 개체 만들기의 실제 구현에 대해 걱정할 필요 없이 원하는 형식을 전달하기만 하면 됩니다. 그리고 당신이 보려고하는 것처럼, 팩터리 메소드 의 서명은 내 기본 클래스를 구현하는 클래스를 반환할 것임을 보여줍니다.이 경우 내 Dog 인터페이스. 팩토리 방법은 추상 공장과 유사하지만 가족에 중점을 두지 않습니다. 팩터리 메서드가 작동하면 각 운영 체제에 대한 대화 논리를 다시 작성할 필요가 없습니다. 기본 대화 상자 클래스 내에서 단추를 생성하는 팩터리 메서드를 선언하는 경우 나중에 팩터리 메서드에서 Windows 스타일 단추를 반환하는 대화 상자 하위 클래스를 만들 수 있습니다. 그런 다음 하위 클래스는 기본 클래스에서 대부분의 대화 상자 코드를 상속하지만 팩터리 메서드 덕분에 화면에 Windows 보기 단추를 렌더링할 수 있습니다. 물론 이 방법을 다른 UI 요소에도 적용할 수 있습니다.

그러나 대화 상자에 추가할 때마다 추상 팩터리 패턴에 더 가까워지요. 두려워하지 말고, 우리는 나중에이 패턴에 대해 이야기 할 것입니다. ShapeFactory 클래스에는 문자열 이름 입력을 기준으로 GeometricShape 개체를 반환하는 정적 메서드 getShape()가 있습니다. 다음으로, 내 Dog 인터페이스를 구현하는 몇 가지 구체적인 클래스를 정의합니다. 우리의 간단한 인터페이스와 유지, 각 클래스는 speak 메서드를 구현 하지만 각 개 유형에 적합 한 약간 다른 방식으로 구현: 팩터리 메서드 패턴 상속에 의존, 개체 생성 하위 클래스에 위임 됩니다. 팩터리 메서드를 구현하여 개체를 만듭니다. [3] 팩터리 메서드는 템플릿 메서드의 전문화입니다. 동시에 팩터리 메서드는 큰 템플릿 메서드의 단계역할을 할 수 있습니다. 작성자 클래스는 새 제품 개체를 반환 하는 팩터리 메서드를 선언 합니다. 이 메서드의 반환 형식이 제품 인터페이스와 일치하는 것이 중요합니다.

왜 공장 패턴인가? 예를 들어 이해해 보겠습니다: 이 Java 예제는 디자인 패턴 의 그림과 유사합니다. 팩터리 메서드 패턴의 구조는 아래 그림과 같습니다: 클래스 기반 프로그래밍에서 팩터리 메서드 패턴은 팩터리 메서드를 사용하여 정확한 클래스를 지정하지 않고도 개체를 만드는 문제를 처리하는 생성 패턴입니다. 생성될 객체입니다. 이 작업은 인터페이스에 지정되고 자식 클래스에서 구현되거나 기본 클래스에서 구현되고 생성자 호출자가 아닌 파생 클래스에 의해 선택적으로 재정의되는 팩터리 메서드를 호출하여 개체를 만듭니다. 앞서 언급했듯이 Java factory 메서드의 서명은 Dog 형식의 클래스를 반환할 것이라고 말합니다: 팩터리 패턴 Factory 메서드의 개념을 이해하는 간단하고 좋은 예는 개체 생성과 관련된 창작 디자인 패턴입니다. 팩터리 패턴에서는 생성 논리를 클라이언트에 노출하지 않고 개체를 만들고 클라이언트는 동일한 공통 인터페이스를 사용하여 새 유형의 개체를 만듭니다.

Posted in Uncategorized