기준 조건 :DDD 및 룩업 테이블
고정 매개 변수와 함께 자전거 모델이있다. 원래 모델 매개 변수 외에도 새 모델 매개 변수를 수동으로 추가 할 수 있어야합니다.
상황 : 데이터베이스의 각 매개 변수는 다음과 같은 특성에 의해 표현된다
:
- 매개 변수 이름
- 단위
- 파라미터 값
은 여러 가지가 있습니다 조회 테이블 데이터 베이스. 각 표에는 사용 가능한 측정 단위가 나와 있습니다.
다른 참조 표에는 매개 변수 이름이 나와 있습니다.
매개 변수의 이름, 값 및 측정 단위가 각 모델에 표시되어야합니다.
질문 :
이 최선의 방법 DDD 기반으로 이러한 접근 방식을 구현하는 방법? 데이터베이스에 사용 된 접근 방식을 끌어 도메인 모델을 복잡하게 만들고 싶지는 않습니다. 모델에 전혀 영향을 미치지 않아야합니다.
주 : 익숙하게 한, 그러나
// Bike model
public class BikeModel {
public BikeModel(string name, double height, double width) {
ChangeName(name);
ChangeHeight(height);
ChangeWidth(width);
}
// Bike model name
public string Name { get; private set; }
// Bike height
public double Height { get; private set; }
// Bike width
public double Width { get; private }
public void ChangeName(string name) {
Name = name;
}
public void ChangeHeight(double height) {
Height = height;
}
public void ChangeWidth(double width) {
Width = width;
}
}
: 처음
, 데이터베이스를 읽기 전에, 나는 예를 들어, 모델의 매개 변수는 속성 집합으로 표현되어야한다고 생각 나 자신이 데이터베이스와 함께, "매개 변수"값이 "상황"섹션에 제시된 많은 특성을 숨 깁니다. 매개 변수는 일반 클래스로 나타낼 수 있습니다. 이 경우
public class ParameterOfModel<T> {
public ParameterOfModel(string name, T value, string units) {
SetName(name);
SetValue(value);
SetUnits(units);
}
// Parameter name
public string Name { get; private set; }
// Parameter value
public T Value { get; private set; }
// Units of the parameter
public string Units { get; private set; }
public void SetName(string name) {
Name = name;
}
public void SetValue(T value) {
Value = value;
}
public void SetUnits(string units) {
Units = units;
}
}
, 다음과 같은 형식 소요됩니다 자전거 모델 :
// Bike model class
public class BikeModel {
public BikeModel(string name, double height, double width) {
ChangeName(name);
ChangeHeight(height);
ChangeWidth(width);
AdditionalNumericParams = new List<ParameterOfModel<double>>();
}
// Bike model name
public string Name { get; private set; }
// Bike height
public ParameterOfModel<double> Height { get; private set; }
// Bike width
public ParameterOfModel<double> Width { get; private set; }
// Additional numeric parameters
public List<ParameterOfModel<double>> AdditionalNumericParams { get; private set; }
public void ChangeName(string name) {
Name = name;
}
public void ChangeHeight(double height) {
Height = new ParameterOfModel<double>("Bike height", height, "Centimeters");
}
public void ChangeWidth(double width) {
Width = new ParameterOfModel<double>("Bike height", width, "Centimeters");
}
// Add an additional parameter to the model
public void AddNewNumericParam(ParameterOfModel<double> additionalParameter) {
AdditionalNumericParams.Add(additionalParameter);
}
}
그러나 방법은 룩업 테이블을 사용하여 이러한 매개 변수를 컴파일을?
질문이 명확하지 않습니다. 기존 DB 모델의 도메인 모델을 만드는 방법에 관한 것뿐 아니라 DB 스키마도 제공하는 것입니다. –
도메인 도메인 모델을 만들 때 저장소를 사용하여 기존 데이터베이스에서 최대한 추상화하는 경향이 있습니다. 그러나, 나는 당신이 기존 조건 하에서 데이터베이스로부터 어떻게 추상화 할 수 있는지 잘 이해하지 못한다. – Eladei