주어진 도메인에서 유사한 개체 또는 구조를 나타내는 여러 파일 형식이있을 수 있습니다. 예를 들어, (지리적 포인트의 순서를 의미) 유형 Track
의 목적은 등이클래스에 각 파일 형식에 대한 메서드가 있어야합니까? 아니면 I/O를 다른 파일 형식 별 클래스에 위임해야합니까?
그래서, 내 수업 Track
를 읽고 저장하도록되어, .GPX, .KML, GeoJSON, WKT, shape 파일에 저장할 수 있습니다 그 다른 형식의 파일 일 수 있습니다.
질문은 다음과 같습니다
내 클래스는 각각의 파일 형식에서 읽을 수있는 방법 (즉, 그들 "에 대해 알고"이다), 또는 각 클래스에 로직을 포함 할 곳은, 다른 클래스를 사용해야 구현해야합니다 각 파일 유형의 구현 세부 정보와 상호 작용할 수 있습니까? 표준 관행은 무엇입니까?
첫 번째 옵션은 다음과 같이 구분된다 :
trackCollection.Add(Track.loadFromGPX(gpx_fname))
trackCollection.Add(Track.loadfromKML(kml_fname))
# ...and so on with other filetypes
두 번째 옵션이 아마 것 동안 :
trackCollection.Add(GpxReader.getTrack(gpx_fname))
trackCollection.Add(KmlReader.getTrack(kml_fname))
그것은 나에게 보인다 싱글 Responsibility는 원칙을 포함하는 몇 가지 특성 정보 숨어서 클래스 간의 상호 의존성은 다른 접근법보다 한 접근법을 더 좋게 만들지 만, 어느 것이 있는지 파악하기에는 충분한 경험이 없습니다.