MyObject имеет форму, и форма должна быть выбрана и передана в качестве аргумента в ctor, не может существовать MyObject без формы, и форма не может меняться в течение его жизни.Это часто случается в реальной жизни.
namespace JackNova.ConsoleClient.Test.Fun
{
abstract class Shape { }
class Circle : Shape { }
class Square : Shape { }
class Triangle : Shape { }
static class Shapes
{
public static Circle Circle { get { return new Circle(); } }
public static Square Square { get { return new Square(); } }
public static Triangle Triangle { get { return new Triangle(); } }
}
class MyObject
{
public Shape Shape { get; private set; }
public MyObject(Shape shape)
{
this.Shape = shape;
}
}
class Test
{
static void Run()
{
MyObject coolOne = new MyObject(Shapes.Circle);
}
}
}
Я думаю, что я нарушаю какой-то принцип здесь, например, открытый закрытый.Моя цель - упростить разработку во время проектирования.Как вы видите, когда я создаю экземпляр MyObject, мне не нужно запоминать, какие объекты я могу передать в качестве аргумента, но они создаются и передаются абстрактным классом.
Как вы думаете, это отстой?