C\#디자인 모델 시리즈 튜 토리 얼-공장 방법 모델
대상 을 만 드 는 데 사용 할 인 터 페 이 스 를 정의 하여 하위 클래스 가 어떤 종 류 를 예화 할 지 결정 합 니 다.공장 방법 은 한 종류의 실례 화 를 하위 클래스 로 지연 시 켰 다.
2.모드 속 캐릭터
2.1 추상 공장(Creator):이 추상 클래스(또는 인터페이스)는 대상 을 만 드 는 공장 방법 을 설명 하고 제품 유형의 대상 을 되 돌려 줍 니 다.
2.2 구체 적 인 공장(ConcreteCreator):공장 방법 을 다시 정의 하고 구체 적 인 Concrete 제품 인 스 턴 스 를 되 돌려 줍 니 다.
2.3 추상 적 인 제품(Product):공장 방법 이 만 든 대상 을 정의 합 니 다.
2.4 구체 적 인 제품(Concrete Product):구체 적 인 제품 은 제품 추상 류 에서 계승 한다.
3.패턴 판독
3.1 공장 방법 모델 의 일반화 유형 도
3.2 공장 방법 모델 의 코드 실현
/// <summary>
/// , Product
/// </summary>
public abstract class Creator
{
/// <summary>
/// Product
/// </summary>
/// <returns></returns>
public abstract Product CreateProduct();
}
/// <summary>
/// , A , Creator
/// </summary>
public class ProductACreator : Creator
{
public override Product CreateProduct()
{
return new ConcreteProductA();
}
}
/// <summary>
/// , B , Creator
/// </summary>
public class ProductBCreator : Creator
{
public ProductBCreator() { }
public override Product CreateProduct()
{
return new ConcreteProductB();
}
}
/// <summary>
/// ,
/// </summary>
public abstract class Product
{
public Product()
{ }
public abstract void Opration();
}
/// <summary>
/// A, Product
/// </summary>
public class ConcreteProductA : Product
{
public ConcreteProductA() { }
public override void Opration()
{
// This is product A
}
}
/// <summary>
/// B, Product
/// </summary>
public class ConcreteProductB : Product
{
public ConcreteProductB() { }
public override void Opration()
{
// This is product B
}
}
4.모델 총화4.1 장점:
공장 방법 은 조건 부 분기(공장 류 와 분기 의 결합 해제)를 제거 하여 간단 한 공장 이 수정 개방 에 대한 문 제 를 해결 했다.
4.2 단점:
공장 방법 모델 이 실 현 될 때 클 라 이언 트 는 어느 공장 을 실례 화하 여 구체 적 인 제품 에 대한 구축 을 실현 할 지 결정 해 야 한다.선택 판단 은 여전히 존재 한다.즉,공장 방법 모델 은 간단 한 공장 의 논리 적 판단 을 클 라 이언 트 에 게 맡 겨 처리 해 야 한다.
간단 한 공장 모델 에 있어 기능 을 증가 하 는 것 은 공장 류 를 수정 하 는 것 이다.그러나 공장 방법 모델 에 대해 서 는 클 라 이언 트 가 수정 되 었 다.
4.3 사용 필드:
어떤 제품 에 대해 호출 자 는 어떤 구체 적 인 공장 서 비 스 를 사용 해 야 하 는 지 정확하게 알 고 이 구체 적 인 공장 을 예화 하여 구체 적 인 제품 을 생산 해 야 한다.
하위 클래스 의 수량 이 고정 되 지 않 아 언제든지 새로운 기능 하위 클래스 가 나타 날 수 있다.
이상 이 바로 본문의 전체 내용 입 니 다.여러분 께 참고 가 될 수 있 기 를 바 랍 니 다.여러분 들 도 저 희 를 많이 응원 해 주시 기 바 랍 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
WebView2를 Visual Studio 2017 Express에서 사용할 수 있을 때까지Evergreen .Net Framework SDK 4.8 VisualStudio2017에서 NuGet을 사용하기 때문에 패키지 관리 방법을 packages.config 대신 PackageReference를 사용해야...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.