C# - Entitätshandler korrekt Verwenden Sie Clean Code [geschlossen]C#

Ein Treffpunkt für C#-Programmierer
Anonymous
 C# - Entitätshandler korrekt Verwenden Sie Clean Code [geschlossen]

Post by Anonymous »

Ich habe eine Frage zum Einrichten meines Dienstes. Mein Hauptanliegen ist, ob das Design sauber und in Ordnung ist. Ob es die soliden Prinzipien erfüllt und nicht auf mich ausgeht. Diese Einheiten werden hinzugefügt. Jede Entität hat eine andere Struktur. Diese Entitäten benötigen jedoch alle gleichen Methoden - speichern Sie in der Datenbank, laden Sie sie aus Speicher herunter, berechnen Sie die Korrektheit, löschen usw. Die Entität sollte nicht erweiterbar sein. Entitäten werden dann weiter in Import und Export unterteilt.

Code: Select all

public interface IBaseEntityHandler {
EntityType EntityType { get; set; }

Task SaveToStorageAsync(string filePath);
Task LoadFromStorageAsync(string filePath);
Task CalculateAsync();
Task SaveToDatanodeAsync();
.......
}
BaseEntityHandler

Code: Select all

public abstract class BaseEntityHandler : IBaseEntityHandler {

private readonly IDatabase _database;
private readonly IStorage _storage;

EntityType EntityType { get; set; }

Task SaveToStorageAsync(string filePath) {
_storage.SaveAsync(filePath);
}

Task LoadFromStorageAsync(string filePath) {
_storage.Load(filePath);
}

Task SaveToDatabaseAsync() {
_database.Save();
}

Task CalculateAsync() {
await CalculateAsyncInternal();
}

abstract Task CalculateAsyncInternal();
}
BasisImportentityHandler

Code: Select all

public abstract class BaseImportEntityHandler : BaseEntityHandler {
abstract Task SomeSpecial();
}
Bestellhandler

Code: Select all

public class OrderHandler : BaseImportEntityHandler {
public EntityType EntityType { get; set; } = EntityType.Order;

public async Task CalculateAsyncInternal() {
}

public async Task SomeSpecial() {
}
}
EntityHandlerFactory
public class EntityHandlerFactory {
public static IBaseEntityHandler CreateEntityHandler(EntityType entityType) {
switch (entityType) {
case EntityType.Order:
return new OrderHandler() as IBaseEntityHandler;
default:
throw new NotImplementedException($"Entity type {entityType} not implemented.");
}
}
}
< /code>
Meine Frage. Ist es in Ordnung, Vererbung zu verwenden, anstatt hier zu falten? Jeder Entitätshandler muss die gleichen Methoden implementieren. Wenn es besondere gibt - importieren/exportieren, werden sie nur erweitert, aber die Basis ändert sich nicht. Daher bricht es nicht die Idee der Erbschaft. Und die zweite Frage ist dieser Vorschlag ok?
Danke

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post