Как уже упоминалось, модификатор доступа по умолчанию для класса в C # - Internal
, что делает ваши классы доступными только в той же сборке, которую они объявили.Кроме того, вы смешиваете объект, который хотите создать, с фактической фабрикой.Фабрика - это отдельный экземпляр, который создает объект.Допустим, у вас есть эта абстракция:
public abstract class GeometricFigure
{
public float Dimension { get; set; }
public float Coordinate_X { get; set; }
public float Coordinate_Y { get; set; }
public float Coordinate_Z { get; set; }
}
и производный класс:
public class Triangle: GeometricFigure
{
public float Dimension { get; set; }
public float Coordinate_X { get; set; }
public float Coordinate_Y { get; set; }
public float Coordinate_Z { get; set; }
}
Затем вы хотите создать фабрику, которая должна создать экземпляр:
public abstract class GeometricFigureFactory
{
public abstract GeometricFigure Create();
}
И конкретная реализация этой фабрики:
public class TriangleFactory: GeometricFigureFactory
{
public override GeometricFigure Create()
{
return new Triangle();
}
}
И использование:
public class Program
{
public static void Main()
{
var factory = new TriangleFactory();
var triangle = factory.Create();
}
}
Преимущества этого шаблона - принцип открытого закрытия, который вы не будете нарушать каждый раз, когда вам нужнодобавить новый экземпляр, который наследуется от GeometricFigure
.Вы просто создаете новую фабрику, которая расширяет GeometricFigureFactory
.Кроме того, вы можете полиморфно использовать как фабрики, так и GeometricFigure
сущности
PS. Обновлены ваши частные методы получения и установки для общего доступа, поскольку они уже инкапсулируют частные поля