인터페이스에 프로그래밍을하고 구체적인 클래스가 아니라고 생각했습니다.하지만 어떤 인터페이스 메소드가 구체적인 클래스에 대한 참조를 보유 할 수 있어야합니까?구체적인 클래스를 매개 변수로 참조하는 인터페이스 메소드가 결합을 유발합니까?
는 다음과 같은 시나리오를 가정 :
이1)
public interface AbsType1 {
public boolean method1(int a); // it's ok, only primitive types here
}
2)
public interface AbsType2 {
public boolean method2(MyClass a); // I think I have some coupling here
}
나는 후자를 방지하기 위해 여기에 다른 디자인을 선택해야할까요? 예 : 나는 다른 사람이 그렇게보고 있지만
public interface MyInterface {} // yes, this is empty
public classe MyClass implements MyInterface {
// basically identical to the previous "MyClass"
}
public interface AbsType2 {
public boolean method2(MyInterface a); // this is better (as long as the
// interface is really stable)
}
그러나 나를 설득하지 않는 무언가가 거기에 여전히 ... 나는 빈 인터페이스를 선언과 불편. 어쩌면 추상 클래스가 더 잘 작동할까요?
나는 조금 혼란 스럽다.
편집 :
좋아, 내가 예를함으로써 더 구체적으로하려고합니다. 이제 나는 ShopCart을 desining 그리고 난이 장바구니에 항목을 추가 할 물론 원하는 가정 해 봅시다 :
public interface ShopCart {
public void addArticle(Article a);
}
을 지금의 기사 구체적인 클래스 인 경우에, 어떤 구현 변경 시간이 지남 경우? 이것이 내가 인터페이스라고 생각할 수있는 이유이지만, 인터페이스가 동작을 지정해야하고 기사에 아무 것도 없다 (또는 거의 없다 ...) 나는 일종의 엔티티라고 생각하기 때문에 적어도 의미 론적 수준에서는 적합하지 않을 것이다. 수업).
아마도이 기사를 추상적 인 수업으로 만드는 것이 최선일 것이라는 결론을 내릴 수있을 것입니다. 어떻게 생각하십니까?
나는 괜찮은 것을 볼 수 있습니다. –
왜 인터페이스를 비어 있다고 선언합니까? 'AbsType'이 신경 써야 할'MyClass'에 관련된 public 메소드가 있습니까? - 없으면 클래스 유형에 제네릭을 사용하는 것이 좋습니다. – JimmyB