Я пытаюсь полностью отделить поведение от данных в моих классах и придумала это простое решение:
class ClassAData
{
public int Property1;
public string Property2;
public bool Property3;
}
class ClassA : SomeInterface
{
public ClassAData Data;
//behaviour
public int CalculateSomething(int value)
{
...
return result;
}
public string SomeOtherMethod(){...}
}
(конечно, будет применена правильная инкапсуляция ...)
Мне было интересно, известно ли это чем-то или используется по общему шаблону? И каковы недостатки, если таковые имеются?
Edit:
Возможно, мне следовало бы уточнить, где я собираюсь использовать это. Я не защищаю использование этого для каждого класса в каждой ситуации. Я планирую использовать это в сервис-ориентированном приложении, где ClassA - это реальный объект домена, а ClassAData - это DTO, который передается между сервисным и презентационным уровнями. Этот подход позволяет избежать значительного дублирования кода, особенно если существует много классов с большим количеством свойств.