2013-10-09 2 views
1

저는 더러운 C# 프로그래머입니다. 오늘은 수석 개발자 코드를 통해 갈 것입니다. 모든 "물건"을 "클래스"로 만들고 "추상 팩토리" 추상 기본 클래스 등을 만들었습니다. 코드를 이해하는 것이 내 마음 속에서 모든 것을 얻는 데 어려움을 겪고 있으며, 추상 및 인터페이스 + 팩토리의 관계에 대한 이유가 있습니다. 나는 비디오를보고 개별적으로 이해하지만 모두이 시나리오에서 그들을 이해하려고 할 때 모두 나를 감동시킨다. 돌아 가기 질문에 이 클래스는 누구에게나 의미가 있습니다

여기

나는 패턴이나 원칙이 적용 된 내용으로 이해할 수없는 클래스의 일부이다 (I 때문에 개인 정보 보호의 객체 이름을 변경)

internal sealed class Mango : GenericMango, IMango 
    { 
     public static readonly IMangoFactory<IMango> Factory; 

     static Mango() 
     { // this line below specially i don't understand 
      Factory = new MangoFactory<IMango>((aBC, disposeMango) => new Mango(aBC, disposeMango)); 
     } 

     private Mango(string aBC, bool disposeMango) 
      : base(aBC, disposeMango) 
     { 
     } 

     // more methods and properties in here etc.. 
+0

어떤 라이브러리에서 Factory 클래스를 찾을 수 있습니까? IoC/Dependency Injection 패턴 인 것 같습니다. –

+4

'eatableMango' 비트는 가장 혼란스러운 비트입니다. 대신'edibleMango'를 시도해보십시오. – musefan

+0

'MagoFactory'는 람다 식으로 전달하는'Func '을 사용합니다. 문제가 람다 표현식이나 대리자가 무엇인지에 기인하는 경우 시작 지점을 제공 할 수있는 많은 온라인 리소스가 있습니다. – Anthony

답변

4

당신이 이해하지 못하는 것을 이해하지 못하기 때문에 당신을 돕기가 어렵습니다.

물론 원래 개발자가이 문제로 갔고 종속성 주입을 사용하는 데 문제가 없었던 이유를 알지 못합니다.

Factory = new MangoFactory<IMango>((aBC, eatableMango) => new Mango(aBC, eatableMango)); 

난 당신이 익명의 대리인이 무엇인지 알고 있다고 가정거야, 어떤 람다 표현식은 다음과 같습니다

문제 라인에 특별히에 확대. 당신이 이것들에 익숙하지 않다면, 이고르는 대답을위한 당신의 사람입니다.

이것은 기본적으로 싱글 톤 팩토리 패턴의 "팩토리 메서드로 람다 식"아종입니다.

또한 MangoFactory 어딘가에 Func < 문자열, bool, IMango> 멤버가 있다고 가정합니다. 이것은 새로운 망고를 생성하기 위해 망고 팩토리가 사용하는 함수입니다.

var theMango = Mango.Factory.CreateMango("foo",true); 

그리고 목표는 망고 건설의 세부 사항을 숨길 수 있었다 : (가능성이) 다음 줄이는 망고를 인스턴스화하는 데 사용되는 것입니다

궁극적으로, 다음되는 패턴입니다.

+0

나는이 질문이 옳은 대답이라고 생각할 것이다. 많은 연구를 할 예정이다. – Mathematics

관련 문제