나는 클래스 디자인에 대해 더 많이 배우려고 노력 중이며 딜레마에 빠져있다. 판매, 판매자 및 구매자의 세 가지 추상화가있는 온라인 경매가 있다고 가정 해보십시오. A 판매 은 판매자와 구매자가 있습니다. 두 판매자와 구매자는 이름, 전화 번호 및 주소와 같은 유사한 필드 세트를 가지며이를 하나의 클래스, 즉 사람으로 그룹화하는 것이 좋습니다. 그런 다음 Abstract Person 클래스의 필드와 접근 자에 대해 코드를 집중화하고 Teacher 및 Student에 대한 특정 유형을 사용할 수 있습니다.추상 메서드 vs 상속
class Sale {
Person teacher;
Person student;
String description;
int hourlyRate;
// Some lesson methods
}
abstract class Person {
private String name;
private String address;
private String telephoneNumber;
// Getters & setters...
}
class Seller extends Person {
// Some teacher stuff
}
class Buyer extends Person {
// Some student stuff
}
지금, 애플리케이션 요구 사항이 기업 간 고객을 포함하지만, 판매자와 구매자가 입력 한 사람의 때문에, 그들은 우리의 클래스 계층 구조에 맞지 않는이 같은 코드로 이어질 수
. 인터페이스를 사용했다면이를 막을 수 있었지만 다른 연락처 필드를 복제해야했습니다.
이 상황에서 가장 좋은 방법은 무엇입니까?
가 구성보다는 상속을 통해 확장을 고려 정말 중요한 비즈니스 관련 기능에 당신의 유형 계층 구조를 유지하면서 따라서
, 당신은 구매자와 판매자 클래스를 통해 신원 연락처 정보 관련 행동을 공유 할 수 있습니다. 그리고 이렇게하면 추상적 인 클래스와 인터페이스를 사용할 수 있습니다. 판매자와 구매자는 인터페이스에 의해 정의 된 일종의 에이전트를 포함하고 있으며, 추상 클래스는 인터페이스를 구현합니다. 추상 비즈니스 클라이언트는 인터페이스를 구현합니다. –
@HovercraftFullOfEels 예제를 제공해 주시겠습니까? – kiruwka
중요한 질문은 사람이 ** 판매자가 될 수도 있고 구매자가 될 수도 있다는 것입니다. –