Rich/Anemic модель
Rich/Anemic модель — два підходи до організації архітектури моделі
Опис мовою C#
Rich модель являє собою чистий ООП підхід, коли дані та алгоритми знаходяться в одній моделі.
class SquareEquation
{
public double A { get; set; }
public double B { get; set; }
public double C { get; set; }
public Tuple<double, double> Solve()
{
var d = B * B - 4 * A * C;
if (d < 0)
return null;
var x1 = (-B + Math.Sqrt(d)) / (2 * A);
var x2 = (-B - Math.Sqrt(d)) / (2 * A);
return new Tuple<double, double>(x1, x2);
}
}
В Anemic моделі класи розділені на ті які зберігають дані(DTO) та алгоритми (сервісні класи).
class SquareEquation
{
public double A { get; set; }
public double B { get; set; }
public double C { get; set; }
}
class SquareEquationCalculator
{
public Tuple<double, double> Solve(SquareEquation e)
{
var d = e.B * e.B - 4 * e.A * e.C;
if (d < 0)
return null;
var x1 = (-e.B + Math.Sqrt(d)) / (2 * e.A);
var x2 = (-e.B - Math.Sqrt(d)) / (2 * e.A);
return new Tuple<double, double>(x1, x2);
}
}
Зауваження
- У більшості випадків, якщо дані складні, а алгоритми прості, тоді використовують Rich модель. Якщо дані прості, а алгоритми складні, тоді — Anemic
- Не варто вважати, що при реалізації Rich моделі всі обчислення повинні бути в середині об'єкта предментної області. Rich також дозволяє створення сервісних класів. Просто Rich дозволяє реалізацію методів в об'єкті, а Anemic цього уникає.
Див. також
This article is issued from Wikipedia. The text is licensed under Creative Commons - Attribution - Sharealike. Additional terms may apply for the media files.