【发布时间】:2020-05-22 20:51:18
【问题描述】:
我有三个承运商,我想根据用户选择生成标签。我计划为此实施工厂模式,但在需要帮助以采取正确路线的地方几乎没有混淆。
这里是详细信息
public interface IShipper
{
string GenerateLabel(Address FromAddress, Address ToAddress);
}
public class USPS : IShipper
{
public string GenerateLabel(Address FromAddress, Address ToAddress)
{
//GET USPS LABEL FOR PROVIDED ADDRESSES
}
}
public class UPS : IShipper
{
public string GenerateLabel(Address FromAddress, Address ToAddress)
{
//GET UPS LABEL FOR PROVIDED ADDRESSES
}
}
这就是混乱。我们有第三家航运公司,提供额外的出境选择。客户可以选择也可以不选择。
public class OutBundShipper
{
public string GenerateLabel(Address FromAddress, Address ToAddress, bool HasOutbound)
{
//GET OutBundShipper LABEL FOR PROVIDED ADDRESSES
}
}
有了这些信息,我想知道什么是更好的方法
- 为所有类添加 HasOutBound 参数到 GenerateLabel 方法。这样一来,它就会保持一致并与界面保持一致。
- 是否应该在接口中添加重载方法并在 USPS 和 UPS 类中抛出未实现的异常?
- 还有其他更好的方法吗?
【问题讨论】:
-
您还没有说明为什么要使用工厂模式;这将有助于提供最佳解决方案。
标签: c# architecture factory-pattern