Add circle shape calculation for shear

This commit is contained in:
RedikultsevEvg
2025-07-20 21:45:07 +05:00
parent ddf075bffd
commit 6e8f4bcc58
40 changed files with 488 additions and 99 deletions

View File

@@ -0,0 +1,17 @@
using StructureHelperCommon.Infrastructures.Interfaces;
using System;
namespace StructureHelperCommon.Models.Shapes
{
internal class CircleShapeCloneStrategy : ICloneStrategy<ICircleShape>
{
IUpdateStrategy<ICircleShape> updateStrategy;
public ICircleShape GetClone(ICircleShape sourceObject)
{
updateStrategy ??= new CircleShapeUpdateStrategy();
CircleShape clone = new CircleShape(Guid.NewGuid());
updateStrategy.Update(clone, sourceObject);
return clone;
}
}
}

View File

@@ -1,4 +1,5 @@
using StructureHelperCommon.Infrastructures.Interfaces;
using StructureHelperCommon.Services;
using System;
using System.Collections.Generic;
using System.Linq;
@@ -11,6 +12,8 @@ namespace StructureHelperCommon.Models.Shapes
{
public void Update(ICircleShape targetObject, ICircleShape sourceObject)
{
CheckObject.IsNull(sourceObject);
CheckObject.IsNull(targetObject);
if (ReferenceEquals(targetObject, sourceObject)) { return; }
targetObject.Diameter = sourceObject.Diameter;
}

View File

@@ -0,0 +1,21 @@
using StructureHelperCommon.Infrastructures.Interfaces;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace StructureHelperCommon.Models.Shapes
{
public class RectangleShapeCloneStrategy : ICloneStrategy<IRectangleShape>
{
IUpdateStrategy<IRectangleShape> updateStrategy;
public IRectangleShape GetClone(IRectangleShape sourceObject)
{
RectangleShape clone = new RectangleShape(Guid.NewGuid());
updateStrategy ??= new RectangleShapeUpdateStrategy();
updateStrategy.Update(clone, sourceObject);
return clone;
}
}
}

View File

@@ -0,0 +1,33 @@
using StructureHelperCommon.Infrastructures.Exceptions;
using StructureHelperCommon.Infrastructures.Interfaces;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace StructureHelperCommon.Models.Shapes
{
public class ShapeCloneStrategy : ICloneStrategy<IShape>
{
private ICloneStrategy<IRectangleShape> rectangleCloneStrategy;
private ICloneStrategy<ICircleShape> circleCloneStrategy;
public IShape GetClone(IShape sourceObject)
{
if (sourceObject is IRectangleShape rectangleShape)
{
rectangleCloneStrategy ??= new RectangleShapeCloneStrategy();
return rectangleCloneStrategy.GetClone(rectangleShape);
}
else if (sourceObject is ICircleShape circleShape)
{
circleCloneStrategy ??= new CircleShapeCloneStrategy();
return circleCloneStrategy.GetClone(circleShape);
}
else
{
throw new StructureHelperException(ErrorStrings.ObjectTypeIsUnknownObj(sourceObject));
}
}
}
}