동일한 기본 구현에서 상속 한 연결 클래스의 데이터베이스에 대한 액세스를 캡슐화하고 있습니다. 이 기본 구현에는 데이터베이스 액세스를위한 protected
LINQ 공급자가 있지만 대부분의 자식 클래스에서 사용합니다. 일부는 자체 공급자가 필요할 수 있으며 일반적으로 "기본"공급자는 사용하지 않습니다.클래스 디자인 : "대체 된"내부 멤버를 숨기거나하지 않으려면?
이 "다른"공급자는 기본 개체에서 파생되지는 않지만 (공통적 인 유사 추상 조상을 공유하지만 그 자체로는 아무 쓸모가없는) 각 클래스 내에서 정확히 같은 역할을하므로 똑같은 방식으로, 즉 같은 문법을 사용할 수있어서 좋을 것 같습니다. new
키워드를 사용하여 해당 멤버를 숨겨서이 작업을 수행 할 수 있지만 이것이 좋은 연습인지 여부는 확실하지 않습니다.
한편으로는 잘못된 정보를 잘못 사용하는 것을 피하는 데 도움이됩니다. 반면에 기본 및 특정 공급자에 대해 동일한 이름을 사용하는 데 익숙해지면 실제로 특정 공급자를 구현하고 여기에서 사용하기에 적합하지 않은 공급자로 작업하는 것을 실제로 잊어 버릴 수 있습니다. 따라서 기본값을 적절하게 지정하는 것이 좋습니다. 특정 연결 클래스를 개발할 사람은 언제 특정 공급자를 사용해야 하는지를 알게되고이를 얻으려면 코드를 만들어야한다는 것을 상기해야합니다.
더 합리적인 이유는 무엇입니까? 나는 지금 후자쪽으로 약간 기울고있다.