으로 인터페이스 속성을 노출 나는 IHedgehog 인터페이스의 IBristles로 고슴도치의 속성 강모를 노출하고 싶습니다 이하 나) 외부 어셈블리 I Bristles가 FindBristleDNA와 같은보다 복잡한 메서드에 사용하는 모든 어셈블리를 참조 할 필요가 없습니다. 내 선택 중 하나입니다패턴 코드에서 인터페이스
// straightforward interface for simple properties of Bristles --
// more complicated methods not exposed
public interface IBristles {
int Quantity{ get; }
}
public class Bristles : IBristles {
public int Quantity{ get; set; }
public MyObscureAssembly.ComplicatedObject FindBristleDNA(){ ... }
}
// simple interface for Hedgehog, which in turn exposes IBristles
public interface IHedgehog {
bool IsSquashed { get; }
IBristles Bristles { get; }
}
// Here, Hedgehog does not properly implement IHedgehog, even though
// Bristles implement IBristles. Will not compile.
public class Hedgehog : IHedgehog {
public bool IsSquashed { get; set; }
public Bristles Bristles { get; set; }
}
가 (내가 원하는하지 않는)에 IHedgehog 인터페이스에 직접 강모를 노출하거나 다른과 다른 속성을 만들 :이 직관적으로 할 수있는 올바른 방법을 보이는 것입니다 이름 (정말 안 중 하나를 수행 할, 나는 IHedgehog이 IBristles이 재산 IsSquashed을 가지고 같은 방법으로, 속성 강모를하고 싶습니다.)
public interface IHedgehog {
bool IsSquashed { get; }
IBristles ReadOnlyBristles { get; }
}
public class Bar : IBar {
public bool IsSquashed { get; set; }
public Bristles Bristles { get; set; }
public IBristles ReadOnlyBristles { get { return this.Bristles; }
}
오히려 우아 보인다. 실제 고슴도치 개체를 처리 할 때
은 물론, 우리는 적절한 강모 개체 수는 getter 및 완전한 기능 세터와 반환 된 객체가 필요합니다. 그러나 IHedgehog는 Bristles 게터에서 IBristles를 반환해야합니다.
더 나은/일반적으로 사용되는 패턴이 있습니까?
고마워, 그게 내가 원하는거야. –