OO 디자인 구현에 익숙하지 않습니다. OO 설계 요구 사항이 있습니다. 우리가 신발로 신발 한 세트를 가지고 있다고 가정 해 봅시다. 사용자가 크기, 색상, 가격 범위 등과 같은 필터 조건을 입력 한 후 신발 세트를 반환하는 함수를 만들어야합니다. 필터 조건이 향후 확장 될 수 있습니다. 앞으로 어떻게 코드를 수정해야 좋은 기능을 만들 수 있습니까?OO 디자인 필터 단
0
A
답변
0
필터는 흔히 Decorator 패턴을 사용하여 구현됩니다. 신발 문제 해결책은 다음과 같을 수 있습니다.
/**
* Empty default filter returns the original list.
* Maybe this should be an Interface.
*/
public class ShoeFilter {
List<Shoe> filter (List<Shoe> shoeList) {
// default ist to do nothing.
return shoeList;
}
}
public class SizeFilter extends ShoeFilter {
private final ShoeFilter filter; // this can be also part of
private final int minSize;
private final int maxSize;
public SizeFilter (ShoeFilter filter, int minSize, int maxSize) {
this.filter = filter;
this.minSize = minSize;
this.maxSize = maxSize;
}
public List<Shoe> filter (List<Shoe> list) {
List<Shoe> filteredList = filter.filter(list); // apply original filter
// filter by size
}
}
public class ColorFilter extends ShoeFilter {
private final ShoeFilter filter;
private final Color color;
public ColorFilter (ShoeFilter filter, Color color) {
this.filter = filter;
this.color = color;
}
public List<Shoe> filter(List<Shoe> list) {
List<Shoe> filteredList = filter.filter(list); // apply original filter
// filter by color
}
}
public static void main(String[] args) {
List<Shoe> shoes = ...;
ShoeFilter emptyFilter = new ShoeFilter(); // can be a singleton
ShoeFilter filter = new SizeFilter(new ColorFilter(emptyFilter, Color.Black), 39, 41);
List<Shoe> filteredList = filter(shoes);
}
Builder을 사용할 수 있습니다.
+0
답변 해 주셔서 감사합니다. 나에게 꽤 분명해. 그래서 신발 세트를 만들기 위해 새 필터를 만들어야 할 때마다 기본 필터 클래스를 구현하기 위해 새 필터 클래스를 만들어야합니다. – sunraincyq
관련 문제
- 1. OO 디자인 대 데이터베이스 디자인
- 2. OO 디자인 질문
- 3. OO 디자인 문제
- 4. JavaScript OO 디자인
- 5. Hibernate OO 디자인 질문
- 6. OO 디자인 상속
- 7. OO 게임 디자인 질문
- 8. OO 디자인 질문
- 9. OO 디자인 쿼리 어댑터
- 10. OO 방식의 게임 디자인
- 11. OO 디자인 - 자바 프로젝트
- 12. OO 디자인 : 객실
- 13. OO 디자인 관련 문제
- 14. OO 디자인 질문
- 15. OO 디자인 : 루비 클래스를위한 다중 퍼시스턴스 디자인
- 16. Perl을 사용하는 OO 디자인 패턴
- 17. OO 디자인 문제 (Symfony2 사용)
- 18. OO 디자인 - 모드 간 전환
- 19. OO 디자인 : 클래스 A에서 복사 된 데이터는
- 20. OO - 리소스 지출 및 디자인 혼란?
- 21. OO XML 파싱을 사용하는 Objective-C 디자인
- 22. OO 프로그래밍 문제 - 상태 디자인 패턴
- 23. OO 디자인 - 오브젝트가 간접적으로 보유하고있는 클래스에 질문합니다.
- 24. OO 디자인 - 긴 메소드 목록 축소
- 25. 그림 그리기 프로그램 인터페이스 용 OO 디자인
- 26. BlackJackTable 설정 시도, OO 디자인 설정 문제
- 27. OO 디자인 원리 - 오픈 클로즈드 원칙
- 28. OO 디자인 선택 및 단일 책임 원칙
- 29. 혼합 악기 포트폴리오를위한 최적의 OO 디자인
- 30. OO 디자인 : 부모로부터 자식 클래스를 반환
그럼 신발 세트는 어디에 보관하고 있습니까? 정적 세트로? – GermaineJason
@GermaineJason ArrayList처럼 신발의 arraylist를 반환하면 충분합니다. –
sunraincyq