나는 동료와 토론을하고 있었고, 결국 서브 클래 싱의 목적에 대해 직관이 상충되었습니다. 내 직감은 서브 클래스의 주요 기능이 부모의 가능한 범위의 값을 표현하는 것이라면 아마도 서브 클래스가 아니어야한다는 것입니다. 그는 반대 직관을 주장했다. 서브 클래 싱은 객체의 "특정"성을 나타내므로 서브 클래스 관계가 더 적절하다.
직관을보다 구체적으로 설명하기 위해 부모 클래스를 확장하는 하위 클래스가 있지만 하위 클래스를 재정의하는 유일한 코드는 생성자 인 경우 (생성자는 일반적으로 "재정의하지 않음을 알고 있습니다.) 실제로 필요한 것은 도우미 방법이었습니다.
예를 들어 다음과 같은 실제 클래스를 고려하십시오.
public class DataHelperBuilder
{
public string DatabaseEngine { get; set; }
public string ConnectionString { get; set; }
public DataHelperBuilder(string databaseEngine, string connectionString)
{
DatabaseEngine = databaseEngine;
ConnectionString = connectionString;
}
// Other optional "DataHelper" configuration settings omitted
public DataHelper CreateDataHelper()
{
Type dataHelperType = DatabaseEngineTypeHelper.GetType(DatabaseEngine);
DataHelper dh = (DataHelper)Activator.CreateInstance(dataHelperType);
dh.SetConnectionString(ConnectionString);
// Omitted some code that applies decorators to the returned object
// based on omitted configuration settings
return dh;
}
}
그의 주장은 다음과 같은 하위 클래스를 갖는 것이 전적으로 적절하다는 것입니다.
public class SystemDataHelperBuilder
{
public SystemDataHelperBuilder()
: base(Configuration.GetSystemDatabaseEngine(),
Configuration.GetSystemConnectionString())
{
}
}
따라서 질문 :
- 디자인 패턴에 대해 이야기하는 사람들 중에서이 직관 중 어느 것이 맞습니까? 위에서 설명한 서브 클래스가 안티 패턴입니까?
- 안티 패턴이라면 그 이름은 무엇입니까?
이것이 쉽게 Google 답변이 될 수 있음을 사과드립니다. 구글에서 내 검색은 주로 텔레 스코핑 생성자 안티 패턴에 대한 정보를 반환했지만 실제로 내가 찾고있는 것이 아닙니다.