Fiquei na duvida em relação a implementação desse padrão em uma API ASP.NET, seria de grande ajuda para sanar algumas tratativas que realizo diariamente no trabalho, porém estou na seguinte duvida
Imaginando a tabela seguinte
+----+------------+---------+
| ID | Title | State |
+----+------------+---------+
| 1 | Blog Post 1| Published |
| 2 | Blog Post 2| Draft |
| 3 | Blog Post 3| Archived |
+----+------------+---------+
e essa possivel implementação
public class BlogPost { public int ID { get; set; } public string Title { get; set; } public IPostState State { get; set; }
public void LoadStateFromDatabase(string state)
{
// Instantiate the appropriate Concrete State class based on the retrieved state
switch (state)
{
case "Draft":
State = new DraftState();
break;
case "Published":
State = new PublishedState();
break;
case "Archived":
State = new ArchivedState();
break;
default:
throw new InvalidOperationException("Invalid state");
}
}
// Other methods and properties for the BlogPost class
}
ou até mesmo com um padrão de Factory,
cairia no mesmo problema de ter uma cadeia de cases/If onde dependendo do dados extraido do banco eu teria que setar a seguinte classe, e nesse caso sempre que houver um novo state cai no mesmo problema que o proprio design pattern propoe resolver,
entendo que com a classe instanciada eu reduziria muito a cadeia de ifs e poderia trazer uma serie de comportamentos que com ifs ficaria impossivel, mas ha alguma forma de contornar esse caso de para cada state ter que fazer um if ou case e instanciar a classe ?