1

我正在尝试在 C# 中实现模板方法模式,以处理继承TemplateFilter类的所有子类之间的不同行为。

    public abstract class TemplateFilter : Operand
{

    public TemplateFilter(params string[] values) : base(setValues(values))
    {}

    public string setValues(params string[] values){

        return formatResult(values);
    }

    public abstract string formatResult(params string[] values);
}

子类之一是:

public class Type3UnaryFilter : TemplateFilter
{
    public Type3UnaryFilter(string value, string field) : base(new string[] { value, field }) { }

    public override string formatResult(params string[] values)
    {
        //type{value}:field
        return "type{"+values[0]+"}:"+values[1];
    }
}

最后,类Operand

public class Operand : IExpressionComponent
{
    public string FilterStatement { get; private set; }

    public Operand(string filterStatement)
    {
        this.FilterStatement = filterStatement;
    }

    public string evaluate()
    {
        return this.FilterStatement;
    }
}

我的问题是我不能从TemplateFilter调用Operand构造函数,因为它需要 setValues 为 statc。另一方面,如果我将 setValues 设置为静态,我不能从TemplateFilter.setValues调用方法formatResult并让子类负责实现所需的行为。那么,为了在不改变架构的情况下实现这种机制,我能做些什么呢?

4

0 回答 0