"위젯"을 포함하는 데이터베이스가 있다고 가정 해 봅시다. 위젯에는 길이 및 너비와 같은 속성이 있습니다 (예 :). wdigets를 작성하기위한 원래의 하위 레벨 API는 엉망입니다. 따라서 더 높은 수준의 함수 세트를 작성하여 호출자가 쉽게 사용할 수 있도록합니다. 데이터베이스가 이상하고 위젯 객체 생성의 타이밍을 잘 제어하지 못합니다. 특히, 특정 다른 일이 먼저 발생한 후에는 처리의 후반 단계까지는 생성 될 수 없습니다. 하지만 내 전화를 으로 보내 주시면 위젯 객체가 초기 단계에서 생성되어 처음부터 해당 속성을 가져 오거나 설정할 수 있다고 생각합니다.곧 생성 될 데이터베이스를 시뮬레이트하는 프록시 객체
그래서 호출자가 사용할 수있는 "ProxyWidget"객체를 구현했습니다. 그것은 원하는 값을 저장할 수있는 private_Length 및 private_Width와 같은 private 필드가 있습니다. 그런 다음 내 호출자가 액세스 할 수있는 공용 속성 길이 및 너비도 있습니다. 호출자가 폭 속성 값을 설정하는 나에게 말한다 경우, 논리는 다음과 같습니다
- 해당 위젯 개체가 데이터베이스에 이미 존재하는 경우, 는 주어진를 저장,
- 그렇지 않은 경우의 Width 속성 설정 나중에 사용할 수 있도록 private_Width 필드의 너비 값
나중에 일부 위젯 개체가 데이터베이스에 만들어 졌을 때 나는 private_Width에서 데이터베이스 너비 필드로 복사하는 등 모든 값을 복사합니다 (한 필드/속성 한 번에, 불행하게도).
위젯의 한 유형에서 정상적으로 작동합니다. 하지만 약 20 가지 필드/속성을 가진 약 50 가지 유형이 있으며 이로 인해 유지 관리가 쉽지 않습니다. 더 똑똑한 접근법이 있는지 궁금합니다. 아마도 나는 리플렉션을 사용하여 "프록시"객체를 만들고 필드/속성 데이터를 일반적인 방식으로 복사 할 수 있습니다. 반복적 인 코드가 복잡하지는 않습니다. 어떻게 든 공통 코드를 배웁니까? "데이터 바인딩"패턴에서 무엇인가를 배울 수 있습니까? 나는 수학자이지 프로그래머가 아니기 때문에 현재의 접근 방식이 평범한 바보라는 느낌이 들지 않습니다. 내 코드는 C#입니다.
데이터베이스에 위젯을 만들 때 어떤 방식 으로든 알림이 표시됩니까? 그렇지 않은 경우 버퍼링 된 변경 사항을 언제 저장할 수 있는지 어떻게 알 수 있습니까? – stakx
실제로 "알림"은 아니지만 위젯이 아직 데이터베이스에 있는지 여부를 확인할 수있는 함수가 있습니다. 요청할 때조차도 그것이 존재한다고 확신 할 수있는 시점이 있습니다. 이 후자의 시점에서 버퍼링 된 데이터를 저장합니다. – bubba