[디자인 모드 02] - 단순 공장.
Class ProductA:
namespace SimpleFactory
{
public class ProductA
{
public ProductA()
{
Console.WriteLine("ProductA created.");
}
}
}
Class ProductB
namespace SimpleFactory
{
public class ProductB
{
public ProductB()
{
Console.WriteLine("ProductB created.");
}
}
}
호출 자:
namespace SimpleFactory
{
class Program
{
static void Main(string[] args)
{
ProductA pA = new ProductA();
ProductB pB = new ProductB();
Console.ReadKey();
}
}
}
결과:
더 나 아가 우 리 는 제품 C 가 필요 하 다. 우 리 는 ProductC 류 를 추가 한 다음 에 new ProductC 의 인 스 턴 스 가 필요 하 다.이렇게 하면 우 리 는 많은 종류의 실례 가 나타 날 것 이다.호출 자 는 여러 가지 인용 을 가지 고 있 으 며, 같은 시각 에 우 리 는 하나의 인용 만 있 으 면 충분 하 다.우 리 는 이런 방법 을 개선 할 수 있 습 니까?우 리 는 하나의 제품 류 를 추상 화하 여 ProductA, ProductB 로 하여 금 이 두 가지 유형 을 계승 하 게 한다.
Product:
namespace SimpleFactory
{
public abstract class Product
{
}
}
호출 자:
class Program
{
static void Main(string[] args)
{
Product p = null;
p = new ProductA();
p = new ProductB();
Console.ReadKey();
}
}
ProductA, ProductB 는 변 하지 않 습 니 다.
우 리 는 부모 클래스 의 인용 이 하위 클래스 를 가리 키 는 인 스 턴 스 를 사용 하 는 것 을 볼 수 있 습 니 다. 이 는 같은 시간 에 하나의 인용 만 있 습 니 다.출력 구조 가 변 하지 않 습 니 다.
더 나 아가 우 리 는 현재 구조 대상 에 있 습 니 다. 인용 문 제 를 해결 하 였 음 에 도 불구 하고 우 리 는 호출 자 스스로 대상 을 만 들 지 못 하 게 할 수 있 습 니까? 답 은 가능 합 니 다.
우 리 는 제품 공장 (ProductFactory) 을 만 든 다음 에 제품 공장 이 제품 유형 (ProductType) 에 따라 제품 을 구성 하도록 한다. 호출 자 는 공장 에 내 가 어떤 종류의 제품 이 필요 한 지 알려 주면 된다.
ProductType:
namespace SimpleFactory
{
public enum ProductType
{
ProductA,
ProductB
}
}
ProductFactory
namespace SimpleFactory
{
public class ProductFactory
{
public Product CreateProduct(ProductType type)
{
Product p = null;
switch (type)
{
case ProductType.ProductA:
p = new ProductA();
break;
case ProductType.ProductB:
p = new ProductB();
break;
}
return p;
}
}
}
호출 자 는 매우 간단 하 다.
class Program
{
static void Main(string[] args)
{
ProductFactory pf = new ProductFactory();
Product p = null;
p = pf.CreateProduct(ProductType.ProductA);
p = pf.CreateProduct(ProductType.ProductB);
Console.ReadKey();
}
}
단순 공정 은 호출 자 와 서비스 자의 직책 을 분리 하여 SOLID 원칙 중 하나 인 단일 직책 원칙 에 더욱 부합된다.간단 한 공장 은 아직 '확장 개방, 폐쇄 수정' 의 원칙 에 부합 되 지 않 는 다. 제품 을 늘 리 려 면 공장 논 리 를 수정 해 야 하기 때문에 추상 적 인 공장 모델 이 이 문 제 를 해결 할 것 이다.
공장 모드 는 일반적으로 응용 프로그램 이 다 중 데이터베이스 에 지원 하 는 데이터베이스 접근 모듈 에 응용 된다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
디자인 모델 의 공장 모델, 단일 모델자바 는 23 가지 디자인 모델 (프로 그래 밍 사상/프로 그래 밍 방식) 이 있 습 니 다. 공장 모드 하나의 공장 류 를 만들어 같은 인 터 페 이 스 를 실현 한 일부 종 류 를 인 스 턴 스 로 만 드 는 것...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.