데이터로드, 때로는 원격, 때로는 로컬, 때로는 JSON, 때로는 XML로드와 관련된 몇 가지 프로젝트를 진행하고 있습니다. 내가 겪고있는 문제는 개발 속도와 다양한 고객의 변화하는 마음으로 인해 내 디자인이 너무 단단하다는 것을 알게되었고, 나는 더 유연 해지기를 바랍니다. 나는 데이터 로딩에 대한 재사용 가능한 솔루션을 생각하려고 노력해 왔으며, 많은 사람들이 같은 문제를 안고 있다고 상상해보십시오. 내가하고 싶은 무엇디자인 패턴/데이터 로딩 솔루션
는 respectivly 구문 분석()와 loadData() 메소드가 유형 파서 및 로더의 멤버 변수를 가지고 일반적인 LoadingOperation 추상 클래스를 만드는 것입니다. 분류 파서 및 로더 내가로드 할 각 건에 대한 LoadingOperation를 확장하는 새로운 클래스를하고 싶은 인터페이스와이 이런 식으로 뭔가로 등 XmlParser가와 JSONParser, LocalLoader 및 RemoteLoader이 될 수 구현하는 클래스입니다 , 날씨는 로컬 XML 파일 또는 원격 JSON 또는 무엇이든간에. 문제는
특정 파서 구현이 LoadingOperation 클래스의 다형성 (polymorphic)을 깨지 않고 사용자 정의 데이터 형식을 반환 할 수 있다는 것입니다. 나는 제네릭 장난과 선언 서브 클래스를 LoadingOperation의
class SpecificLoader extends LoadingOperation<CustomDataType>
추천하고 파서 클래스와 비슷한 일을하지만,이 조금 이상한 것 같다되었다.
누구든지 잘못하고 있거나 더 잘할 수있는 것에 대한 제안 사항이 있습니까? 나는 변화하는 명세에 빨리 반응 할 수 있기를 원한다. (사실을 무시하면 그만큼 변하지 않을 것이다!) 코드의 논리적 분리가있다.
어떤 도움을 주셔서 감사합니다!
편집 : 문제는 또한 당신이 정말로 요구가 너무 빨리 변화로 부드럽게 가능한 한 적은 코드로 입력 된 무언가를 원하는 나에게 소리 여기 link text
다른 출처의 동일한 데이터를 다루고 있습니까? 나는. 이 데이터로 동일한 비즈니스 모델 객체를 채우고 있습니까? 그렇지 않다면 나는 전체 접근법이 의미가 있다는 것을 의심한다 ... – Jules
내 생각은 이것이 로컬 데이터/웹 서비스 등을 다루기위한 reuable 패턴이 될 것이라고 생각한다. (이것들은 짧은 dev times와 prototype을 가진 작은 모바일 어플리케이션이다. 일반적으로 로컬 데이터 만 있음). 각 프로젝트마다 때로는 변경 가능한 소스의 데이터가 동일하지만 다른 프로젝트의 경우 데이터와 모델이 완전히 다릅니다. :) – Dori
죄송합니다, 이것이 어떻게 작동하는지 모르겠습니다. 구문 분석은 비즈니스 논리를 따르는 데이터를 처리하는 것으로 분명히이 논리와 데이터가 변경되므로 특정 시점에 특정 방법이 필요합니다. 특정 변형을 수행 할 때까지 레이어를 오버 레이어로 만들면 아무런 효과가 없습니다. 필자가 이해할 수있는 유일한 추상화 계층은 파서 특성을 래핑하면 myObject = loadData()의 상위 수준 호출 만 사용할 수 있습니다. 또는 loadData (myObject);를 사용하면 실제 파서 구현을 신속하게 대체 할 수 있습니다. – Jules