C \ # 디자인 모델 (3) - 공장 방법 모델
6747 단어 C \ # 디자인 모드나 랑 같이 C 배 워.#디자인 모드
간단 한 공장 모델 에서 간단 한 공장 모델 의 단점 을 말 하면 한 가 지 는 간단 한 공장 모델 시스템 이 확장 되 기 어렵 고 신제품 을 추가 하면 간단 한 공장 방법 을 수정 해 야 한다. 그러면 간단 한 공장 의 실현 논리 가 너무 복잡 하지만 본 주제 에 소개 한 공장 방법 모델 은 간단 한 공장 모델 에 존재 하 는 이 문 제 를 해결 할 수 있다.공장 모델 이 이 문 제 를 어떻게 해결 하 는 지 구체 적 으로 살 펴 보 자.
2. 공장 방법 모델 의 실현
공장 방법 모델 이 간단 한 공장 모델 을 해결 할 수 있 는 이 유 는 구체 적 인 제품 의 설립 을 하위 클래스 로 미 루 기 때문이다. 이때 공장 류 는 모든 제품 의 설립 을 책임 지지 않 고 구체 적 인 공장 이 반드시 실현 해 야 할 인 터 페 이 스 를 제시 하기 때문이다. 그러면 공장 방법 모델 은 시스템 이 공장 류 의 논 리 를 수정 하지 않 고 신제품 을 추가 하 는 것 을 허용 할 수 있다.이렇게 하면 간단 한 공장 모델 의 단점 도 극복 할 수 있다.다음은 공장 모델 의 구체 적 인 실현 코드 를 살 펴 보 겠 습 니 다.
namespace
{
///
///
///
public abstract class Food
{
//
public abstract void Print();
}
///
///
///
public class TomatoScrambledEggs : Food
{
public override void Print()
{
Console.WriteLine(" !");
}
}
///
///
///
public class ShreddedPorkWithPotatoes : Food
{
public override void Print()
{
Console.WriteLine(" ");
}
}
///
///
///
public abstract class Creator
{
//
public abstract Food CreateFoddFactory();
}
///
///
///
public class TomatoScrambledEggsFactory:Creator
{
///
///
///
///
public override Food CreateFoddFactory()
{
return new TomatoScrambledEggs();
}
}
///
///
///
public class ShreddedPorkWithPotatoesFactory:Creator
{
///
///
///
///
public override Food CreateFoddFactory()
{
return new ShreddedPorkWithPotatoes();
}
}
///
///
///
class Client
{
static void Main(string[] args)
{
// ()
Creator shreddedPorkWithPotatoesFactory = new ShreddedPorkWithPotatoesFactory();
Creator tomatoScrambledEggsFactory = new TomatoScrambledEggsFactory();
//
Food tomatoScrambleEggs = tomatoScrambledEggsFactory.CreateFoddFactory();
tomatoScrambleEggs.Print();
//
Food shreddedPorkWithPotatoes = shreddedPorkWithPotatoesFactory.CreateFoddFactory();
shreddedPorkWithPotatoes.Print();
Console.Read();
}
}
}
공장 방법 으로 이 루어 진 시스템 을 사용 하여 시스템 이 신제품 을 추가 해 야 할 때 우 리 는 다 형 성 을 이용 하여 시스템 의 확장 을 완성 할 수 있 고 추상 적 인 공장 류 와 구체 적 인 공장 의 코드 에 대해 어떠한 변경 도 할 필요 가 없다.예 를 들 어 우 리 는 '다 진 가지' 를 주문 하고 싶 습 니 다. 이때 우 리 는 다 진 가지 의 구체 적 인 공장 류 와 다 진 가지 류 만 정의 하면 됩 니 다.간단 한 공장 모델 에서 처럼 공장 류 의 실현 을 수정 하지 않 아 도 됩 니 다. 구체 적 인 코드 는 다음 과 같 습 니 다.
///
///
///
public class MincedMeatEggplant : Food
{
///
///
///
public override void Print()
{
Console.WriteLine(" ");
}
}
///
/// ,
///
public class MincedMeatEggplantFactory : Creator
{
///
///
///
///
public override Food CreateFoddFactory()
{
return new MincedMeatEggplant();
}
}
///
///
///
class Client
{
static void Main(string[] args)
{
//
//
Creator minceMeatEggplantFactor = new MincedMeatEggplantFactory();
//
Food minceMeatEggplant = minceMeatEggplantFactor.CreateFoddFactory();
minceMeatEggplant.Print();
Console.Read();
}
}
3. 공장 방법 모델 의 UML 그림
공장 모델 의 구체 적 인 실현 을 설명 한 후에 공장 모델 중의 각종 UML 그림 을 살 펴 보 자.
UML 그림 을 통 해 알 수 있 듯 이 공장 방법 모델 에서 공장 류 와 구체 적 인 제품 류 는 평행 한 등급 구 조 를 가지 고 이들 은 일일이 대응 된다. UML 그림 에 대한 설명 은 다음 과 같다.
Creator 류: 추상 적 인 공장 역할 을 하려 면 모든 구체 적 인 공장 은 반드시 이 추상 적 인 유형 을 계승 해 야 한다.
Tomato Scrambled Eggs Factory 와 Shredded Pork With Potatoes Factory 류: 구체 적 인 공장 역할 을 하여 구체 적 인 제품 을 만 드 는 데 사용 합 니 다.
Food 류: 추상 적 인 제품 역할, 구체 적 인 제품 의 추상 적 인 유형. 모든 구체 적 인 제품 은 이런 유형 을 계승 해 야 한다.
Tomato Scrambled Eggs 와 Shredded Pork With Potatoes 류: 구체 적 인 제품 역할 을 하고 추상 적 인 제품 류 가 정의 에 대한 추상 적 인 방법 을 실현 하 며 구체 적 인 공장 류 에 의 해 만들어 지고 이들 은 일일이 대응 하 는 관 계 를 가진다.
넷 째,. NET 에서 공장 방법의 유형 을 실현 했다.
. NET 라 이브 러 리 에 도 공장 방법 을 실현 하 는 클래스 가 많 습 니 다. 예 를 들 어 Asp. net 에 서 는 처리 대상 이 요청 을 처리 하 는 데 구체 적 으로 사 용 됩 니 다. *. aspx 파일 을 요청 할 때 System. Web. UI. PageHandlerFactory 류 에 매 핑 됩 니 다. *. ashx 의 요청 은 System. Web. UI. Simple HandlerFactory 류 에 매 핑 됩 니 다.(이 두 종 류 는 모두 IHttpHandler Factory 인터페이스 에 계승 되 어 있 습 니 다) 이 점 에 대해 서 는 "C: \ Windows \ Microsoft. NET \ Framework \ v 4.0.30319 \ \ Config \ 웹 config" 파일 에서 관련 정 의 를 찾 을 수 있 습 니 다. 구체 적 인 정 의 는 다음 과 같 습 니 다.
다음은 공장 방법 모델 이 Asp. net 에서 어떻게 실현 되 는 지 구체 적 으로 살 펴 보 겠 습 니 다. Index. aspx 페이지 에 요청 을 하면 PageHandler Factory 에서 GetHandler 방법 으로 Index. aspx 대상 을 만 들 것 입 니 다. 이들 의 아 날로 그 관 계 는 다음 과 같 습 니 다.
총화
공장 방법 모델 은 대상 을 대상 으로 프로 그래 밍 하 는 다 형 성 을 통 해 대상 의 설립 을 구체 적 인 공장 으로 지연 시 켜 간단 한 공장 모델 에 존재 하 는 문제점 을 해결 하고 개방 폐쇄 원칙 (즉, 확장 개발, 수정 폐쇄) 에 도 잘 부합된다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
디자인 모드 시리즈 - 상태 모드아침 8 시 반 에 일어나 머리 를 빗 고 집 을 나 와 천안문 으로 갔 는데 천안문 에 도착 하 니 이렇게 추 운 날 에 사람 이 왜 이렇게 많 지?다 들 나 처럼 뜨 거 운 마음 을 가지 고 있 구나.오문 에 들...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.