首页 > 解决方案 > 一种使用 SOLID 原理替换 Switch 的方法

问题描述

我在创建字符串构建器的服务中有以下方法,基本上它根据该特定几何图形列表中的元素数量来选择字符串是复数还是单数:

private string TranslateForm(string type)
{
    switch (type)
    {
        case "Square":
            return _geometricFormsService.InformationSquares.Quantity == 1 ? _localizationService.GetString("Header.Square") : _localizationService.GetString("Header.Squares");
        case "Circle":
            return _geometricFormsService.InformationCircles.Quantity == 1 ? _localizationService.GetString("Header.Circle") : _localizationService.GetString("Header.Circles");
        case "EquilateralTriangule":
            return _geometricFormsService.InformationTriangles.Quantity == 1 ? _localizacionService.GetString("Header.Triangle") : _localizacionService.GetString("Header.Triangles");
    }

    return string.Empty;
}

我有更多的几何图形,所以这意味着 switch 语句可能会增加。我很想看看是否有一种用一些设计模式替换这段代码的好方法,因为我希望能够在这里应用 SOLID,我看到打开关闭原则被违反,每次我添加一个新的几何形式时我都有修改类并添加新案例。

另一件事是,我有更多的几何图形,而不仅仅是这 3 个,我想我要么必须为每种类型的几何图形创建某种字典或策略?困扰我的是每种情况下的条件。

标签: c#-4.0

解决方案


推荐阅读