控制台应用程序。启动时有一个菜单,但在我看来一切都错了。在这种情况下是否可以应用“状态”模式?有没有可能像这样摆脱开关盒?
static void Main(string[] args)
{
DataFunction dataFunction = new DataFunction();
dataFunction.InputMenu();
}
public void InputMenu()
{
Console.WriteLine("Add Customer? --- 1, Remove customer? --- 2, Show
All Customer? --- 3");
string _value = Console.ReadLine();
switch (_value)
{
case "1":
AddCustomer();
break;
case "2":
RemoveCustomer();
break;
case "3":
ShowAllCustomers();
break;
default:
Console.WriteLine("You clicked an unknown letter");
break;
}
public void AddCustomer()
{
Console.WriteLine("Input Name");
string _name = Console.ReadLine();
Console.WriteLine("Input Adress");
string _adress = Console.ReadLine();
_dataContext.Customers.Add(
new Customer
{
Name = _name,
Adress = _adress
});
_dataContext.SaveChanges();
InputMenu();
}
作为一种选择(但没有状态模式),简而言之,如果您将来自用户的输入的接收分离到单独的静态方法中(也许为输入创建特殊的 ValueObject 类),并将 CRUD 分离到单独的静态方法中,那么您可以使用这个类:
对于 UserAction-操作的选择 TUserAction 将为 int,next 为 null,在 DoAction 中为 switch。在其他情况下,下一个将是我刚刚写的这个,并且在任何地方都代替了 Funcs 和 Actions(除了一个 Action),而是替换了实际的静态方法。
更好地代替状态模式访问者
也许您可以修改维基百科中的代码,就像评论中写的一样