【发布时间】:2019-01-25 06:05:51
【问题描述】:
我正在使用工厂模式编写代码。在 switch 情况下,我实际上是在返回 Class 对象。使用这个返回类,我将调用一个方法。这是策略模式的一个例子吗?
using System;
using System.Linq;
namespace ConsoleApplication1
{
public interface IVehicle
{
void Manufacture();
}
public class Car : IVehicle
{
public void Manufacture()
{
Console.WriteLine("Car Manufacturing");
}
}
public class Bike : IVehicle
{
public void Manufacture()
{
Console.WriteLine("Bike Manufacturing");
}
}
public static class factory
{
public static IVehicle GetVehicle(string name)
{
switch(name)
{
case "Car":
return new Car();
case "Bike":
return new Bike();
default:
throw new ArgumentException();
}
}
}
public class program
{
public static void Main()
{
Console.WriteLine("Please enter Car or Bike for manufacture");
var vehicleName = Console.ReadLine();
factory.GetVehicle(vehicleName).Manufacture();
Console.ReadLine();
}
}
}
你能解开我的误解吗?这段代码是工厂模式和策略模式的例子吗? 提前谢谢你。
编辑
这是策略模式的一个例子吗?我刚刚编辑了 Program.cs
public class program
{
public static void Main()
{
Console.WriteLine("Please enter Car or Bike for manufacture");
var vehicleName = Console.ReadLine();
var vehicle = factory.GetVehicle(vehicleName);
}
public void manufacture(IVehicle vehicle)
{
// assume that this method is in different class and method is calling with strategy as i understood.
vehicle.Manufacture();
}
}
【问题讨论】:
-
这可能更适合Software Engineering。我不相信这是策略模式的一个例子,因为没有使用策略接口。工厂类中的所有内容都是硬编码的。
-
您在此处实现的是 Factory Pattern 的简单示例,而不是 Strategy Pattern 的示例,John 在上面评论。为了更好地理解,请查看Strategy Pattern vs Factory pattern。
-
谢谢@John 和 vikscool。如果您能清除我的疑问,我已经编辑了问题。
-
即使是制造这也不是战略模式
-
@DarshitGandhi 如果您对我们的答案有不理解的地方,请随时提问
标签: c# design-patterns