2010-11-27 2 views
3

이것은 두려운 질문입니다. 모든 의견을 주시면 감사하겠습니다.Moq, Ninject, Fluent NHibernate 스타일 라이브러리?

최근 서로 비슷한 패턴을 가진 몇 가지 소스 프레임 워크를 보았습니다.

Ninject

Bind<IService>().To<RedImpl>().WhenMemberHas<RedAttribute>(); 

그들이 모든 구성 일종의 관련된 것을 내가 눈치 챘을

HasManyToMany(x => x.Products) 
    .Cascade.All() 
    .Table("StoreProduct"); 

Fluent NHibernate

mock.Setup(framework => framework.DownloadExists("2.0.0.0")) 
    .Returns(true) 
    .AtMostOnce(); 

Moq

. 그리고 일반적인 속성 설정 구성에 비해 사용하는 것이 더 편리합니다.

내가이 스타일을 좋아한다고 말할 수는 있지만 정확히 이유를 알아낼 수는 없습니다.

이 스타일이 유용 할 때 어떤 이점이 있는지 말해 줄 수 있습니까? 또한 그러한 스타일의 이름이 있습니까? 후드에서 어떻게 구현됩니까? Moq 스타일로 작성하는 방법에 대한 자습서가 있으면 많은 도움이 될 것입니다. 모든 도움

업데이트

감사합니다. 이 스타일이 Fluent Interface이라고 불리는데, 샘플 Fluent 인터페이스를 만드는 방법에 대한 자습서가 있습니까?

+0

예제를 시작하려면 이전에 링크에서 Martin Fowler의 예제를 훨씬 더 필요로하지 않았습니다. 더 복잡한 시나리오의 경우, 자신의 예제에서 기본 메소드 체인을 수행하는 방법이 명확하지 않으면 Fluent Nhibernate 소스, Moq 소스 또는 Ninject 소스가 훨씬 더 정교한 예제를 제공합니다. 그곳에는 튜토리얼이있을 것이라고 확신하지만, 많은 것을 필요로 할 정도로 복잡하지는 않습니다. – JasonTrue

답변

4

패턴은 유창함 인터페이스라고하며, 작업에 대한 전체에 도메인 특정 언어가 잔인한 때 일반적으로 가장 사용되는 http://www.martinfowler.com/bliki/FluentInterface.html

에 자세히 설명되어 있습니다. 기본적으로, 작성한 각 메소드에서 조작중인 오브젝트를 리턴하고 메소드 이름을 의도와 거의 일치 시키려고하십시오.

비록 반드시 연결되어 있지는 않지만, 동기 부여 시나리오의 일부가 비슷하기 때문에 복잡한 개체 작성에 대한 대체 방법에 대해 작성자 패턴을 비교할 수 있습니다.

2

이 스타일의 가장 큰 장점은 쉽게 읽고 복잡한 객체를 구축하기위한 코드를 작성 할 수있는 Fluent interface

라고합니다.

2

이들은 모두 fluent interfaces이며 일반적으로 일부 작업 (예 : 구성)을 위해 작은 DSL을 생성하는 데 사용됩니다. 컴파일러에서 형식을 검사 할 수 있으므로 텍스트보다 이점이 있습니다.

예를 들어 xml을 사용하여 많은 IoC 컨테이너를 구성 할 수 있습니다. 이는 구성 수정을 쉽게 배치하는 것과 같은 몇 가지 장점이 있지만 유형 이름 변경과 같은 일부 리팩터링이 발생하면 취약합니다.