public static void Main()
OrdenTrabajoFactory factory = new OrdenTrabajoFactory();
var OT =factory.CrearTrabajo();
public abstract class Trabajo{
public abstract ITarea CrearTrabajo();
public class OrdenTrabajoFactory : Trabajo {
public override ITarea CrearTrabajo(){
return new OrdenTrabajo();
public class OrdenTrabajo : ITarea {
public string Id {get;set;}
public string IdOrdenTrabajo {get;set;}
public DateTime FechaRegistro {get;set;}
public DateTime FechaTerminacion {get;set;}
Console.WriteLine("Se ha iniciado la OT");
this.FechaTerminacion = DateTime.Now;
Console.WriteLine($"Se ha terminado la OT con fecha: {FechaTerminacion}");
public void AsignarPersnal(){
Console.WriteLine("Se ha asignado la OT");