문제

데이터로 개체를 채우는 공장 수업이 있습니다. 객체에서 저장을 구현하고 싶지만 DB 물건으로 객체를 채우고 싶지 않습니다. 클래스를 생성하는 공장을 갖는 것은 어리석은 일입니까?

IE : 내 .save () 메소드에서 객체의 메소드에서 팩토리를 호출합니다 (myObject);

도움이 되었습니까?

해결책

클래스에서 데이터베이스 제품에 대해 걱정하는 경우 O/R Mapper 사용을 고려해 보셨습니까?

이렇게하면 데이터베이스 재료가 코드와 도메인 객체를 깨끗하게 유지할 수 있습니다.

어쩌면 살펴보십시오 nhibernate 또는 활성 기록.

다른 팁

공장 클래스는 새로운 객체를 만드는 데 도움이되는 창조적 패턴입니다.

지속적인 객체를 다루는 다양한 패턴이 있으며 그 중 하나는 데이터 맵퍼입니다.http://martinfowler.com/eaacatalog/datamapper.html

이것은 종종 저장소와 함께 사용됩니다http://martinfowler.com/eaacatalog/repository.html

이러한 패턴을 사용하여 데이터베이스를 도메인/비즈니스 객체에서 멀리 떨어 뜨리고 응용 프로그램 내에서 쿼리 및 저장으로 액세스 할 수 있습니다.

따라서 데이터 맵퍼/저장소는 지속성의 두 측면 (데이터베이스에서 채워지고 데이터베이스로 다시 저장)을 담당합니다.

아니요, 전혀 어리석은 것이 아닙니다. 사실, 그것이 모두가 어떻게 해야하는지입니다. 비즈니스 객체에는 지속 논리가 포함되어서는 안됩니다.

BTW, C# 3.0을 사용하고 있다면 공장 수업을 귀찮게하지 않을 수도 있습니다. 확장 메소드 만 작성하십시오. 이렇게하면 여전히 비즈니스 객체에서 영구 코드를 격리하고 여전히 myobject.save ()를 호출 할 수 있습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top