简体   繁体   English

当方法接受不同的签名时要实现哪种工厂模式?

[英]what kind of factory pattern to implement when methods accept different signatures?

How do I define a factory whose implementations may accept different numbers of parameters? 如何定义工厂的实现可以接受不同数量的参数?

public abstract class CarFactory
{
    public abstract void countStuff(??); //not sure how to define this
}

I would like the factory to be able to create different objects like: 我希望工厂能够创建不同的对象,例如:

public class BMW : CarFactory
{
  public override void countStuff(param1, param2) {}
}

public class Ford : CarFactory
{
    public override void countStuff(param1) {}
}

Not sure if "countStuff" should be a factory responsibility, but you could get something similar this way: 不知道“ countStuff”是否应由工厂负责,但是您可以通过以下方式获得类似信息:

public interface ICountParam {}

public class BmwParam : ICountParam
{
    public BmwParam(string a)
    {
        A = a;
    }

    public string A { get; set; }
}
public class FordParam : ICountParam
{
    public FordParam(string a, string b)
    {
        A = a;
        B = b;
    }
    public string A { get; set; }
    public string B { get; set; }
}

public interface ICarFactory<in T> where T : ICountParam
{
    void CountStuff(T param);
}

public class BMW : ICarFactory<BmwParam>
{
    public void CountStuff(BmwParam param) { }
}

public class Ford : ICarFactory<FordParam>
{
    public void CountStuff(FordParam param) { }
}

Usage: 用法:

 bmw.CountStuff(new BmwParam("A"));
 ford.CountStuff(new FordParam("A", "B"));

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM