파이썬

소개

의 공장 방법 디자인 패턴 이 기사에서는 파이썬으로 구현 된 공장 방법 디자인 패턴에 뛰어들 것입니다.

디자인 패턴은 소프트웨어 개발에서 반복되는 다양한 문제에 대한 시도되고 테스트 된 솔루션을 정의합니다. 그것들은 실제 코드를 나타내는 것이 아니라 최적의 결과를 위해 코드를 구성 할 수있는 방법을 나타냅니다.

제한된 자원의 세계에서 디자인 패턴은 사용 된 자원의 최소량으로 가장 많은 결과를 얻는 데 도움이됩니다. 또한 디자인 패턴이 모든 상황에 적용되는 것은 아니며 특정 시나리오에 가장 적합한 방법을 선택하기 위해 당면한 문제를 평가하는 것이 중요합니다.

디자인 패턴은 주로 창조 패턴,구조 패턴 및 행동 패턴으로 분류되지만 몇 가지 범주로 나뉩니다.

팩토리 메소드 패턴은 창조적디자인 패턴이다.

팩토리 메소드 디자인 패턴

정의

팩토리 메소드는 객체 생성을위한 팩토리 인터페이스를 제공하는 수단으로 객체 지향 프로그래밍에 사용됩니다. 이러한 인터페이스는 일반 구조를 정의하지만 객체는 초기화하지 않습니다. 초기화는 더 구체적인 하위 클래스에 남아 있습니다.

부모 클래스/인터페이스는 다른 유형의 하위 클래스에서 공유 할 수있는 모든 표준 및 일반 동작을 수용합니다. 하위 클래스는 차례로 수퍼 클래스를 기반으로 하는 개체의 정의 및 인스턴스화를 담당합니다.

동기 부여

팩토리 메소드 디자인 패턴의 주된 동기는 일반적인 속성과 기능을 공유하는 다양한 유형의 객체를 만드는 데 사용되는 추상 클래스를 생성하여 코드의 느슨한 결합을 향상시키는 것입니다.

이로 인해 동일한 클래스에서 상속된 공유 기능이 다시 작성되지 않으므로 코드의 유연성과 재사용이 향상됩니다. 이 디자인 패턴을 가상 생성자라고도 합니다.

팩토리 메서드 디자인 패턴은 클라이언트가 추상 클래스를 통해 만들 하위 클래스 또는 객체 유형을 선택할 수 있도록 하여 라이브러리에서 일반적으로 사용됩니다.

팩토리 메서드는 필요한 개체에 대한 정보를 수신하고 인스턴스화하고 지정된 형식의 개체를 반환합니다. 이것은 우리의 응용 프로그램이나 라이브러리에 다른 프로그램이나 코드 조각과의 단일 상호 작용 지점을 제공하여 객체 생성 기능을 캡슐화합니다.

팩토리 메서드 구현

우리 프로그램은 생성 및 색상 추가 및 모양 면적 계산과 같은 기타 작업 측면에서 모양 개체를 처리하는 데 사용되는 라이브러리가 될 것입니다.

사용자는 라이브러리를 사용하여 새 개체를 만들 수 있어야합니다. 우리는 하나의 개별 모양을 만들고 그대로 쓸모가 시작할 수 있지만 공유 논리의 많은 우리가 사용할 수있는 각각의 모든 모양에 대해 다시 작성해야한다는 것을 의미 할 것입니다.

이 반복을 해결하는 첫 번째 단계는calculate_area()calculate_perimeter()과 같은 메서드와 차원 등의 속성을 가진 부모 모양 클래스를 만드는 것입니다.

그런 다음 특정 모양 개체가 기본 클래스에서 상속됩니다. 모양을 만들려면 어떤 종류의 모양이 필요한지 파악하고 그에 대한 하위 클래스를 만들어야 합니다.

우리는 일반적인 모양을 나타내는 추상 클래스를 만들어 시작합니다:

이것은 우리의 모든 모양에 대한 기본 클래스입니다. 이제 가서 몇 가지 구체적인,더 구체적인 모양을 만들 수 있습니다:

지금까지 추상 클래스를 만들어 라이브러리에서 사용할 수있는 다양한 모양에 맞게 확장했습니다. 다른 모양 개체를 만들기 위해,클라이언트는 이름과 우리의 모양의 세부 사항을 알고 별도로 생성을 수행해야합니다.

이것은 공장 방법이 작용하는 곳입니다.

팩토리 메서드 디자인 패턴은 클라이언트에서 사용 가능한 모양을 추상화하는 데 도움이 됩니다. 또한 객체 생성을 중앙 집중화하고 캡슐화 할 수 있습니다.

클라이언트의 입력에 따라 특정 모양 클래스를 만드는 데 사용되는ShapeFactory를 생성하여이를 달성하겠습니다.

이것은 생성을위한 인터페이스입니다. 우리는 구체적인 클래스의 생성자를 호출하지 않습니다,우리는 공장을 호출하고 모양을 만들 것을 요청.

ShapeFactory는 이름 및 필요한 치수와 같은 모양에 대한 정보를 수신하여 작동합니다. 우리의 공장 방법create_shape()는 다음 만들고 원하는 모양의 준비 개체를 반환하는 데 사용됩니다.

클라이언트는 객체 생성 또는 세부 사항에 대해 아무것도 알 필요가 없습니다.

이 코드를 실행하면 다음과 같은 결과를 얻을 수 있습니다.

우리는 우리가create_shape()기능에 전달하는 정보를 기반으로 우리를 위해이 작업을 수행 할 공장을 부탁드립니다.

찬반 양론

찬반 양론

팩토리 메서드 디자인 패턴을 사용하는 주요 장점 중 하나는 코드의 대부분의 구성 요소가 동일한 코드베이스의 다른 구성 요소를 인식하지 못한다는 점에서 코드가 느슨하게 결합된다는 것입니다.

이로 인해 전체 프로그램에 영향을 미치거나 중단하지 않고 특정 구성 요소에 더 많은 기능을 이해하고 테스트하고 추가하기 쉬운 코드가 생성됩니다.

팩토리 메소드 디자인 패턴은 또한 특정 기능을 처리하는 클래스와 객체가 더 나은 코드를 생성하는 단일 책임 원칙을 유지하는 데 도움이됩니다.

단점

더 많은 클래스를 만들면 결국 가독성이 떨어집니다. 추상 공장(공장 공장)과 결합하면 코드는 곧 유지 보수 할 수 있지만 장황 해집니다.

결론

결론적으로,팩토리 메소드 디자인 패턴은 특정 객체를 생성하는 데 필요한 정확한 클래스를 지정하지 않고 객체를 생성 할 수 있습니다. 이를 통해 코드를 분리하고 재사용 성을 향상시킬 수 있습니다.

다른 디자인 패턴과 마찬가지로 모든 개발 시나리오가 아닌 특정 상황에만 적합하다는 점에 유의하는 것이 중요합니다. 패턴의 이점을 얻기 위해 팩토리 메소드 디자인 패턴을 구현하기로 결정하기 전에 당면한 상황을 평가하는 것이 중요합니다.

답글 남기기

이메일 주소는 공개되지 않습니다.