小编The*_*ONE的帖子

当代码依赖于两个对象的子类型时,是否存在要处理的设计模式

我会尝试尽可能明确,以防有更好的解决方案来解决我的问题而不是回答我的问题.

我在C#工作.

我有一个报告模板,可以包含任意数量的"功能".功能可能是信息表,饼图/条形图,列表等.我将报告生成为文本文件或PDF(将来可能还有其他选项).

到目前为止,我有一个IFeature接口,以及一些实现它的功能类型:ChartFeature,ListFeature等等.我读取了从数据库启用的功能列表,并将每个功能一起传递给方法以及数据ID,并且该方法返回一个填充IFeature的正确类型.

我还有一个IReportWriter接口TextReportWriter和PdfReportWriter实现.该接口有一个方法:AddFeature(IFeature).

问题是AddFeature每个作家最终看起来像:

public void AddFeature(IFeature)
{
    InsertSectionBreakIfNeeded();

    if(IFeature is TableFeature)
    {
        TableFeature tf = (TableFeature)feature;
        streamWriter.WriteLine(tf.Title);
        for(int row=0; row < tf.Data.First.Length; row++)
        {
            for(int column=0; i < tf.Data.Length; i++)
            {
                if(i != 0)
                {
                    streamWriter.Write("|");
                }
                streamWriter.Write(feature.Data[column][row]);
            }
        }
    }
    else if(IFeature is ListFeature)
    {
        ListFeature lf = (ListFeature)feature;
        streamWriter.Write(lf.Title + ": ");
        bool first = true;
        foreach(var v in …
Run Code Online (Sandbox Code Playgroud)

c# oop design-patterns

5
推荐指数
1
解决办法
856
查看次数

标签 统计

c# ×1

design-patterns ×1

oop ×1