如何处理多个工厂
How to handle multiple factories
我正在为一个项目进行设计,运行 遇到了一个有趣的问题。
基本上有一个 Web 表单允许某人为我的调度程序服务创建新作业。该表单将包含如下属性:
购买交易所
卖出交易所
为此,我们假设每个字段都有:
购买交易所:交易所 1、交易所 2
卖出交易所:SellExchange1,SellExchange2
我应该能够 select 从表单中购买交换或出售交换,但域模型中的购买交换或出售交换之间没有明确的关系
我目前的设计是让调度程序服务在创建新作业时调用一个工厂,该工厂将为所选的 Buy Exchange 实例化一个提供程序。两个提供商都将实现一个包含 Sell() 方法的接口。
我的问题是,我是否应该为将由接口 sell 方法调用的 sell exchange 使用第二个工厂?由于 "selling" 逻辑对于任一卖出交易所都是不同的,我想知道是否有针对此的特定设计模式?
这是我设计的一些快速伪代码
public interface IExchangeFactory()
{
// Create Exchange 1 or Exchange 2
}
public class ExchangeFactory : IExchangeFactory
{
// Either return Exchange 1 or Exchange 2 provider
}
public class SellExchangeFactory : IExchangeFactory
{
// Either return Sell Exchange 1 or Sell Exchange 2 provider
}
public class Exchange1Provider : IExchange1Provider
{
public void PerformPurchase(){
{
// Purchase Logic Here
}
public void Sell()
{
// Instantiate Sell Exchange chosen in form
}
}
public class Exchange2Provider : IExchange2Provider
{
public void PerformPurchase(){
{
// Purchase Logic Here
}
public void Sell()
{
// Use sell exchange factory to instantiate sell exchange provider
}
}
这是处理这个问题的合适设计吗?我不确定如何搜索这个问题,因为我不确定这个问题的术语
我认为拥有两个工厂是个不错的主意,每个工厂对应一种功能类型,buy/sell。但让他们保持独立。
即客户选择购买供应商 A,并选择供应商 B。
因此,您可以从工厂分别获得 A 和 B 的正确买卖供应商。
如果您有兴趣继续阅读,您打算使用的这个模式本质上是策略模式。我认为您可以将它与模板方法模式相结合,以防所有提供者都需要遵循相同的步骤序列但实现不同。
我正在为一个项目进行设计,运行 遇到了一个有趣的问题。
基本上有一个 Web 表单允许某人为我的调度程序服务创建新作业。该表单将包含如下属性:
购买交易所
卖出交易所
为此,我们假设每个字段都有:
购买交易所:交易所 1、交易所 2 卖出交易所:SellExchange1,SellExchange2
我应该能够 select 从表单中购买交换或出售交换,但域模型中的购买交换或出售交换之间没有明确的关系
我目前的设计是让调度程序服务在创建新作业时调用一个工厂,该工厂将为所选的 Buy Exchange 实例化一个提供程序。两个提供商都将实现一个包含 Sell() 方法的接口。
我的问题是,我是否应该为将由接口 sell 方法调用的 sell exchange 使用第二个工厂?由于 "selling" 逻辑对于任一卖出交易所都是不同的,我想知道是否有针对此的特定设计模式?
这是我设计的一些快速伪代码
public interface IExchangeFactory()
{
// Create Exchange 1 or Exchange 2
}
public class ExchangeFactory : IExchangeFactory
{
// Either return Exchange 1 or Exchange 2 provider
}
public class SellExchangeFactory : IExchangeFactory
{
// Either return Sell Exchange 1 or Sell Exchange 2 provider
}
public class Exchange1Provider : IExchange1Provider
{
public void PerformPurchase(){
{
// Purchase Logic Here
}
public void Sell()
{
// Instantiate Sell Exchange chosen in form
}
}
public class Exchange2Provider : IExchange2Provider
{
public void PerformPurchase(){
{
// Purchase Logic Here
}
public void Sell()
{
// Use sell exchange factory to instantiate sell exchange provider
}
}
这是处理这个问题的合适设计吗?我不确定如何搜索这个问题,因为我不确定这个问题的术语
我认为拥有两个工厂是个不错的主意,每个工厂对应一种功能类型,buy/sell。但让他们保持独立。
即客户选择购买供应商 A,并选择供应商 B。 因此,您可以从工厂分别获得 A 和 B 的正确买卖供应商。
如果您有兴趣继续阅读,您打算使用的这个模式本质上是策略模式。我认为您可以将它与模板方法模式相结合,以防所有提供者都需要遵循相同的步骤序列但实现不同。