@Geluos, попробуйте сгруппировать фракталы в классы (если Ваша цель научиться проектировать архитектуры приложений). Например, есть главный класс Fractal, содержащий общие свойства фракталов. От него наследуются классы-потомки, которые определяют соответственно треугольник Серпинского, фрактал-папоротник и другие. Также можно сделать классы-рендеры фракталов, которые специализируются на отрисовке фракталов, в то время как сами классы фракталов только хранят сами свойства фракталов. Таким образом, будет соблюдён принцип SOLID - Single responsibility principle, а также сами классы фракталов будут реализовывать паттерн Factory Method (в том случае, если будут возвращать объект-рендер посредством, например, интерфейсной ссылки).
public interface IRenderable
{
IRender Render { get; }
}
public interface IRender
{
void Draw();
}
public abstract class Fractal
{
}
public class ConcreteFractalA : Fractal, IRenderable
{
public IRender Render => new RenderA(this);
}
public class ConcreteFractalB : Fractal, IRenderable
{
public IRender Render => new RenderB(this);
}
public abstract class Render : IRender
{
public Render(IRenderable target)
{
}
public abstract void Draw();
}
public class RenderA : Render
{
public RenderA(IRenderable target) : base(target)
{
}
public override void Draw()
{
}
}
public class RenderB : Render
{
public RenderB(IRenderable target) : base(target)
{
}
public override void Draw()
{
}
}
internal class Program
{
private static void Main(string[] args)
{
}
}