특정 의도로 인터페이스를 설계하는 가장 좋은 방법은 무엇입니까? 예를 들어 IEmailable과 같이 객체를 emailable으로 표시하는 인터페이스를 구현하고자한다고 가정 해 보겠습니다. ConvertToEmail()의 인터페이스에서 하나의 메소드를 사용하는 것이 가장 좋습니다.이 메소드는 Subject 유형이 & 인 전자 메일 유형의 객체를 반환하거나 Address, Body, Subject 등의 인터페이스 속성을 갖는 것이 좋습니다. 인터페이스를 사용하여 객체를 처리하는 메소드는 원하는대로 이메일을 생성하고 &을 조작 할 수 있습니까?인터페이스가 객체 또는 객체 자체의 속성을 노출해야합니까?
0
A
답변
0
내가 주소를 떠나 밖으로 가하지 것
public interface IEmailConverter<T>
{
Email ConvertToEmail(T source)
}
처럼, 자신의 인터페이스와 클래스로 이메일 기능을 분할 할 가치가있을 수 있습니다. 그 이유는 다음과 같습니다
- 전자 메일 보내는 방법에 대한 세부 사항이 변경되면 전자 메일로 보낼 개체가 있으면 안됩니다.
- 어느 시점에서 동일한 클래스를 이메일로 보내는 방법이 두 가지 이상일 수 있습니다. 클래스가 자체 전자 메일 변환을 "소유"한다면이를 지원할 방법이 없습니다.
- 정확한 세부 정보가 없으면 전자 메일을 생성하는 것이 클래스가 주로하는 일과는 별도의 책임입니다.
추가 단계로 넘어가십시오. 전자 메일로 개체의 형식을 지정하고 전자 메일로 보내기 이상의 작업을 수행하려는 경우 어떻게해야합니까? 제목, 주소, 기타 텍스트 등을 추가 - - 더 재사용 될 것입니다 텍스트가 다음에 다른 단계가
public interface ITextFormatter<T>
{
string ConvertToText(T source)
}
처럼, 자신의 책임을해야로서 어쩌면 객체를 포맷. 객체 자체와 관련된 부분 (문자 메시지로 값 추출)은 새 클래스에 속하게됩니다.
같은 (클래스가 같은과ToString
말이 무시 여부 모습에 따라 다릅니다.)
public class TextFormatter<T> : ITextFormatter<T>
{
public virtual string ConvertToText(T source)
{
return source.ToString();
}
}
은 그런 다음 필요에 따라 대체 구현을 만들 수 있습니다, 어떤 경우에 작동 할 수 있습니다 심지어 기본 구현이있다
public class FooPlainTextFormatter : ITextFormatter<Foo>
public class FooHtmlFormatter : IHtmlFormatter<Foo>
질문은 객관적인 것보다 주관적입니다. 실제로 유스 케이스에 달려 있으며 인터페이스의 일반적인 사용은 여러 덩어리에 걸쳐 동작과 속성을 공유하는 것입니다. –
나는이 기능을 다른 기능 없이도 필요로 할 것입니다. 항상 그들 모두에게 전화하십시오, 그냥 한 번만 전화하십시오. –
.NET이 어떻게하는지보십시오. 몇 가지 아이디어가 있습니다. https://msdn.microsoft.com/en-us/library/system.net.mail.mailmessage(v=vs.110).aspx – Kyle