c\#공장 모델 에 대한 상세 한 설명
public class Customer
{
public void CallSomeOne(){
PhoneA p1 = new PhoneA();
p1.Call();
}
}
public class PhoneA
{
public void Call(){}
}
public class PhoneB
{
public void Call(){}
}
코드 세그먼트 1:일반적인 호출 방식
using System;
namespace Example1
{
public interface IProduct { }
public class PhoneA : IProduct { }
public class PhoneB : IProduct { }
public class Factory
{
public IProduct Create()
{
// 。
return new PhonetA ();
}
}
}
using System;
namespace Example1
{
public enum Category
{
A,
}
public static class ProductFactory
{
public static IProduct Create(Category category)
{
switch (category)
{
case Category.A:
return new PhoneA();
case Category.B:
return new PhoneB();
default:
throw new NotSupportedException();
}
}
}
}
코드 세그먼트 2:간단 한 공장 모델 의 실현
[TestMethod]
public void Test()
{
Factory factory = new Factory();
IProduct phone = factory.Create();
Assert.AreEqual<Type>(phone.GetType(), typeof(PhoneA));
}
코드 세그먼트 3:간단 한 공장 모델 에 대한 테스트 새로운 문 제 는 방금 도 언급 했다.우 리 는 전화 만 할 수 있 는 핸드폰 만 있 으 면 오프라인 매장 에 가서 사고 싶 습 니 다.저 는 어느 공장 에서 생산 하 는 지 관심 이 없습니다.간단 한 공장 에서 우 리 는 어느 공장 에서 생산 하 는 지 관심 이 필요 합 니 다(코드 세그먼트 3 참조).그래서 우 리 는 코드 안에서 오프라인 매장 을 실현 한다.그러면 우 리 는 도대체 어느 공장 에서 생산 한 것 인지 에 관심 을 가 질 필요 가 없다.그래서 우 리 는 추상 적 인 공장 을 도입 해 야 한다.그러면 우 리 는 오프라인 매장 과 만 나 야 한다.어떤 공장 을 찾 아가 휴대 전 화 를 가 져 가 야 하 는 지 더 이상 신경 쓰 지 말 아야 한다.구체 적 인 실현 은 코드 세그먼트 4.우 리 는 배치 파일 을 이용 하여 공장 에 대한 선택 을 실현 하고 제품 에 대한 선택 을 실현 할 수 있다.본 고 는 다른 개념 을 도입 하고 싶 지 않 기 때문에 여기 서 토론 하지 않 는 다.
namespace Example2
{
/// <summary>
///
/// </summary>
public interface IFactory
{
IProduct Create(); // ――
}
/// <summary>
///
/// </summary>
public class FactoryA : IFactory
{
public IProduct Create()
{
return new PhoneA();
}
}
/// <summary>
///
/// </summary>
public class FactoryB : IFactory
{
public IProduct Create()
{
return new PhoneB();
}
}
}
using System;
using System.Diagnostics;
namespace Example2
{
class Client
{
public void SomeMethod()
{
IFactory factory = new FactoryA(); // Factory , FactoryA ;
IProduct Phone = factory.Create(); // IFactory IProduct
// ...
}
private IFactory factory;
public Client(IFactory factory) // IFactory Setter
{
if (factory == null) throw new ArgumentNullException("factory");
this.factory = factory;
}
public void AnotherMethod()
{
IProduct Phone = factory.Create();
// ... ...
}
}
}
소결 1.공장 방법 모델 은 전체 대상 의 설립 방법 을 중시 하 는 것 이다.2.공장 방법의 의 도 는 매우 명확 하 다.이 는 유형의 정례 화 과정 을 하위 클래스 로 지연 시 키 고 new()의 업 무 를 공장 에 맡 기 는 것 이다.이 동시에 추상 적 인 공장 정 의 를 추가 하여 일련의 통 일 된 통용 공장 방법 을 가 진 실체 공장 문 제 를 해결한다..NET 플랫폼 에서 우 리 는 배치,범 형 과 의뢰 의 방법 을 통 해 전형 적 인 모델 목적 을 실현 하 는 동시에 공장 유형 과 고객 프로그램 간 의 더욱 느슨 한 구조 과정 을 얻 을 수 있다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
C#Task를 사용하여 비동기식 작업을 수행하는 방법라인이 완성된 후에 이 라인을 다시 시작할 수 없습니다.반대로 조인(Join)만 결합할 수 있습니다 (프로세스가 현재 라인을 막습니다). 임무는 조합할 수 있는 것이다. 연장을 사용하여 그것들을 한데 연결시키는 것이...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.