에서 나를 구원 나는 일반적으로 비즈니스 개체에서이 같은 사례를 본 적이 :비즈니스 오브젝트
public void Save()
{
if(this.id > 0)
{
ThingyRepository.UpdateThingy(this);
}
else
{
int id = 0;
ThingyRepository.AddThingy(this, out id);
this.id = id;
}
}
왜 여기에 비즈니스 오브젝트에? 이것은 비즈니스 논리보다는 문맥 또는 데이터와 관련이 있습니다.
예를 들어, 같은 것을 통해 갈 수있는 객체의 소비자 ...
...Get form values from a web app...
Thingy thingy = Thingy.CreateNew(Form["name"].Value, Form["gadget"].Value, Form["process"].Value);
thingy.Save();
또는 갱신이 같은 ...
... Get form values from a web app...
Thingy thingy = Thingy.GetThingyByID(Int32.Parse(Form["id"].Value));
Thingy.Name = Form["name"].Value;
Thingy.Save();
은 왜이다 ? 왜 계산, 비즈니스 특정 규칙 등과 같은 실제 비즈니스 로직을 포함하지 않고 검색/지속성을 피할 수 있습니까?
이 방법을 사용하여, 코드는 다음과 같습니다
... Get form values from a web app...
Thingy thingy = Thingy.CreateNew(Form["name"].Value, Form["gadget"].Value, Form["process"].Value);
ThingyRepository.AddThingy(ref thingy, out id);
또는 갱신이 같은 ... 이러한 예, 소비자, 모두에서
... get form values from a web app ...
Thingy thingy = ThingyRepository.GetThingyByID(Int32.Parse(Form["id"].Value));
thingy.Name = Form["Name"].Value;
ThingyRepository.UpdateThingy(ref thingy);
사람 오브젝트에 대해 수행중인 작업을 가장 잘 알고 있으며 저장소를 호출하고 ADD 또는 UPDATE를 요청합니다. 객체는 그 컨텍스트에서 DUMB로 유지되지만 검색 또는 유지 방법이 아닌 핵심 비즈니스 로직을 제공합니다.
간단히 말해서 비즈니스 오브젝트 자체 내에서 GET 및 SAVE 메소드를 통합하는 이점을 보지 못했습니다.
불평을 멈추고 준수해야합니까, 아니면 뭔가 빠졌습니까?
바로이 부분이 액티브 레코드 대 도메인 모델입니다. 각각에는 그들의 장소, 강점 및 약점이 있습니다. –