2009-10-28 5 views
1

나는 질문이있다, 여기에 예제가있다
나는 모델 클래스가 : 주식C# : "save()"메서드를 어디에 둘까요?

 
    public class Stock{ 
     //some properties, stock name, stock code; 
     public String StockName{ 
      get,set 
     } 
     public String StockCode{ 
      get,set 
     } 
    } 

또한 데이터베이스에서 데이터를로드하고 주식을 생성하고 속성 값을 설정하는 서비스 클래스 StockService을 가지고 .

그래서, 내 질문에, "저장()"메서드를 어디에 넣어야
Option1 : Stock 클래스,

 
    public class Stock{ 
     public void Save(){ 
      //use the repository to save into db. 
     } 
    } 

Option2 : 넣어 서비스 클래스

 
    public class StockService:IStockService{ 
     public void Save(Stock stock){ 
      //use the repository to save into db. 
     } 
    } 


옵션 1에 대한 생각 : 주식은 조금 똑똑해 보인다, 그것은 자체 ojbect 지향을 저장할 수 있습니다. 그리고 옵션 2의 경우, 많은 사람들이 이런 종류의 패턴을 사용하는 것을 보았습니다. 너 무슨 생각이야?

답변

8

서비스에 Save() 메서드를 추가하면 Stock 클래스에서 데이터베이스 구조에 대한 지식이 필요하지 않게됩니다. Load()와 Save()를 두 개의 다른 클래스에 넣으면 꽤 혼란 스럽습니다.

1

나는 "주식이 조금 똑똑해 보입니다"때문에 방금 말한 것 때문에 옵션 2를 선호합니다. 나는 이것이 당신의 주식을 지우고 싶을 때와 같이 조금 더 의미가 있다고 생각한다.

0

스톡은 저장 위치를 ​​신경 쓰지 않아야합니다. 따라서 저장 및로드가 모두 서비스 클래스 imo에 있어야합니다.

0

동의합니다. 옵션 2로 이동하여 데이터 엔터티 클래스를 실제 데이터 저장소에서 분리합니다. 그런데 the Repository Pattern을 살펴볼 수 있습니다.

5

Active Record patternRepository pattern에서 모두 읽을 수 있습니다. 당신은 여기 어딘가에 있습니다.

액티브 레코드는 '더 단순한'것으로 간주되지만 리포지토리는 우려 사항을 효과적으로 구분할 수 있으므로 저장소가 '순수'합니다 (데이터 액세스에 신경 쓸 필요가 없습니다).

관련 문제