UpdateStrategy for Actions was added

This commit is contained in:
Evgeny Redikultsev
2023-07-09 19:46:36 +05:00
parent 03b882f54d
commit 3e0e51d0c9
30 changed files with 402 additions and 138 deletions

View File

@@ -1,4 +1,5 @@
using System;
using StructureHelperCommon.Infrastructures.Interfaces;
using System;
namespace StructureHelperCommon.Models.Shapes
{
@@ -6,15 +7,15 @@ namespace StructureHelperCommon.Models.Shapes
/// Interface for point of center of some shape
/// Интерфейс для точки центра некоторой формы
/// </summary>
public interface IPoint2D : ICloneable
public interface IPoint2D : ISaveable, ICloneable
{
/// <summary>
/// Coordinate of center of rectangle by local axis X, m
/// Coordinate of center of point by local axis X, m
/// Координата центра вдоль локальной оси X, м
/// </summary>
double X { get; set; }
/// <summary>
/// Coordinate of center of rectangle by local axis Y, m
/// Coordinate of center of point by local axis Y, m
/// Координата центра вдоль локальной оси Y, м
/// </summary>
double Y { get; set; }

View File

@@ -0,0 +1,20 @@
using StructureHelperCommon.Infrastructures.Interfaces;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace StructureHelperCommon.Models.Shapes.Logics
{
/// <inheritdoc />
public class PointUpdateStrategy : IUpdateStrategy<IPoint2D>
{
/// <inheritdoc />
public void Update(IPoint2D targetObject, IPoint2D sourceObject)
{
targetObject.X = sourceObject.X;
targetObject.Y = sourceObject.Y;
}
}
}

View File

@@ -1,17 +1,32 @@
namespace StructureHelperCommon.Models.Shapes
using StructureHelperCommon.Infrastructures.Interfaces;
using StructureHelperCommon.Models.Shapes.Logics;
using System;
namespace StructureHelperCommon.Models.Shapes
{
/// <inheritdoc />
public class Point2D : IPoint2D
{
private readonly IUpdateStrategy<IPoint2D> updateStrategy = new PointUpdateStrategy();
/// <inheritdoc />
public Guid Id { get; }
/// <inheritdoc />
public double X { get; set; }
/// <inheritdoc />
public double Y { get; set; }
public Point2D(Guid id)
{
Id = id;
}
public Point2D() : this(Guid.NewGuid()) { }
public object Clone()
{
var point = new Point2D() { X = X, Y = Y };
return point;
var newItem = new Point2D();
updateStrategy.Update(newItem, this);
return newItem;
}
}
}