디자인 패턴 기술을 익히려고 노력하고 있는데,이 패턴들 사이의 차이점이 무엇인지 궁금합니다. 그것들은 모두 같은 것으로 보입니다-특정 엔티티에 대한 데이터베이스 로직을 캡슐화하므로 호출 코드는 기본 지속성 계층에 대해 알지 못합니다. 간단한 연구에서 모든 방법은 일반적으로 표준 CRUD 방법을 구현하고 데이터베이스 별 세부 정보를 추상화합니다.
명명 규칙 (예 : CustomerMapper vs. CustomerDAO vs. CustomerGateway vs. CustomerRepository) 외에도, 차이점은 무엇입니까? 차이가 있다면 언제 다른 것을 선택하겠습니까?
과거에는 다음과 유사한 코드를 작성했습니다 (간단하고 자연스럽게-일반적으로 공용 속성을 사용하지 않음).
public class Customer
{
public long ID;
public string FirstName;
public string LastName;
public string CompanyName;
}
public interface ICustomerGateway
{
IList<Customer> GetAll();
Customer GetCustomerByID(long id);
bool AddNewCustomer(Customer customer);
bool UpdateCustomer(Customer customer);
bool DeleteCustomer(long id);
}
CustomerGateway
모든 메소드에 대해 특정 데이터베이스 로직을 구현 하는 클래스가 있습니다. 때로는 인터페이스를 사용하지 않고 CustomerGateway의 모든 메소드를 정적으로 만들었습니다 (알다시피, 테스트가 덜 가능하다는 것을 알고 있습니다).
Customer cust = CustomerGateway.GetCustomerByID(42);
이것은 데이터 매퍼 및 리포지토리 패턴에 대해 동일한 원칙으로 보입니다. DAO 패턴 (게이트웨이와 같은 것)은 데이터베이스 특정 게이트웨이를 권장하는 것으로 보입니다.
뭔가 빠졌습니까? 똑같은 일을하는 3-4 가지 방법이있는 것이 조금 이상합니다.