Проста Фабрика (~Simple Factory)
Якщо конструкторів багато і вони великі (з багатьма перевірками),
то робити кілька майже однакових конструкторів просто невигідно
Робимо один спільний приватний конструктор і багато невеличких статичних функцій
Можна відмовитися від static, але прийдеться зробити інший клас, який буде робити об'єкти нашого класу
Відсутність наслідування
class Rectangle {
double a;
double b;
private Rectangle(double a, double b) {
if (a > 0)
{
this.a = a;
}
else
{
this.a = 0;
}
if (b > 0)
{
this.b = b;
}
else
{
this.b = 0;
}
}
public static Rectangle LengthAndHeight(double a, double b) {
return new Rectangle(a, b);
}
public static Rectangle LengthAndAngle(double a, double angle)
{
double b = a * Math.Sin(angle);
return new Rectangle(a, b);
}
}
static void Main(string[] args)
{
Rectangle r1 = Rectangle.LengthAndHeight(2, 4);
Rectangle r2 = Rectangle.LengthAndAngle(2, Math.PI * 45 / 180.0);
Console.ReadKey();
}