Как провести рефакторинг этих классов для взаимодействия друг с другом?
Мое требование - использовать имя фигуры и нарисовать эту фигуру с размерами, как в методе. Draw('rectangle', 'l:10,w:20');
,
- Должна быть проверка размеров по типу фигуры.
- Эти классы могут быть реорганизованы, чтобы добавить больше классов или изменить иерархию.
- Не следует использовать проверку во время выполнения, такую как отражение. Проблема должна быть решена только с дизайном класса.
- Не использовать
if-else
или жеswitch
операторы в методе clientDraw
,
Требование:
public static void main()
{
// Provide the shape and it's dimensions
Draw('rectangle', 'l:10,w:20');
Draw('circle', 'r:15');
}
Я создал следующие классы. Я рассмотрел низкую (слабую) связь и высокую сплоченность, создав две иерархии классов, чтобы они могли расти самостоятельно. Я сохранил обязанности рисования для одного класса и создания измерения для другого класса.
Мой вопрос о создании этих объектов и взаимодействии друг с другом для достижения моих требований.
public abstract class Shape()
{
Dimension dimension;
public void abstract SetDimentions(Dimension dimension);
public void abstract Draw()
}
public void Rectangle()
{
void override SetDimensions(RectangleDimension dimension)
{
}
void override Draw()
{
// Use the 'dimention' to draw
}
}
public void Circle()
{
void override SetDimensions(CircleDimension dimension)
{
}
void override Draw()
{
// Use the 'dimention' to draw
}
}
public class RectangleDimension
{
public int length {get; set; }
public int width { get; set; }
}
public class CircleDimension
{
public int circle { get; set; }
}