IOC에서는 구성 파일을 편집하는 것만으로 구현을 대체 할 수 있다는 것을 알고 있습니다.IOC는 클래스 수준이지만 데이터베이스 충돌은 어떻게됩니까?
그러나 클래스가 특정 데이터베이스 테이블 및 sproc과 결혼하면 어떻게됩니까? 클래스/엔티티는 특정 테이블과 저장 프로 시저에 묶여 있습니다.
여기 있습니까?
IOC에서는 구성 파일을 편집하는 것만으로 구현을 대체 할 수 있다는 것을 알고 있습니다.IOC는 클래스 수준이지만 데이터베이스 충돌은 어떻게됩니까?
그러나 클래스가 특정 데이터베이스 테이블 및 sproc과 결혼하면 어떻게됩니까? 클래스/엔티티는 특정 테이블과 저장 프로 시저에 묶여 있습니다.
여기 있습니까?
클래스 A의 인스턴스를 클래스 B의 인스턴스에 삽입 할 때 A는 B가 의존 할 수있는 계약 (일반적으로 인터페이스로 지정됨)을 충족한다는 점에서 기본 작업을 수행합니다 (단, 클래스 또는 수퍼 클래스). B가 계약을 만족하지 않으면 행동이 정의되지 않습니다.
이렇게 결론을 내 렸습니다.이 방식으로 상호 작용할 때 테이블 구조가 일치하는지 여부는 신경 쓰지 않아야합니다. 인터페이스가 올바른지 염려해야합니다.
또한 ORM 의미에서 이러한 종류의 OO 엔티티는 내 경험에 의하면 주입되지 않는 경향이 있습니다. 일반적으로 서비스 제공 업체에서 인젝션이 발생합니다. 한 말 클리 터스
...
public class CustomerService //may implement extend from some base
{
public ICustomerDao customerDAO { get; set; } //the injected object
}
CustomerService
은 당신이 IoC 컨테이너를 사용하여 의존성 주입과 일부 CustomerDao를 주입 할 수 있습니다 (예를 들어) 비즈니스 레벨의 클래스입니다. 당신이 주사 할 수있는 것은 ICustomerDao
의 계약입니다. 그래서 그것을 구현하는 모든 것이 여기에 주입 될 것입니다.
귀하가 참조하는이 대체 능력을 Liskov 대체 원리라고합니다. – Llyle