using StructureHelper.Models.Materials; using StructureHelperCommon.Infrastructures.Interfaces; using StructureHelperCommon.Services; namespace StructureHelperLogics.Models.Materials { public class HeadMaterialUpdateStrategy : IUpdateStrategy { private IUpdateStrategy baseUpdateStrategy; private IUpdateStrategy helperMaterialUpdateStrategy; public HeadMaterialUpdateStrategy( IUpdateStrategy baseUpdateStrategy, IUpdateStrategy helperMaterialUpdateStrategy) { this.baseUpdateStrategy = baseUpdateStrategy; this.helperMaterialUpdateStrategy = helperMaterialUpdateStrategy; } public HeadMaterialUpdateStrategy() : this( new HeadMaterialBaseUpdateStrategy(), new HelperMaterialUpdateStrategy()) { } public void Update(IHeadMaterial targetObject, IHeadMaterial sourceObject) { CheckObject.IsNull(sourceObject); CheckObject.IsNull(targetObject); if (ReferenceEquals(targetObject, sourceObject)) { return; } baseUpdateStrategy.Update(targetObject, sourceObject); targetObject.HelperMaterial = sourceObject.HelperMaterial.Clone() as IHelperMaterial; helperMaterialUpdateStrategy.Update(targetObject.HelperMaterial, sourceObject.HelperMaterial); } } }