使用 switch 调用不同类的方法是否违反单一职责原则?

问题描述 投票:0回答:1

我有两个类(A 和 B)和一个具有一些属性的模型(T)。在A类中,有一个传递模型(T)的方法。我们必须使用 switch case 检查条件来检查名称,其中名称与大小写匹配,然后我们必须调用 B 类的公共方法。

Public class A{
private IB _b;

public void methods(T t){
    switch(t.name){
        case Q.A
        _b.testmethod1(t);
        case Q.B
        _b.testmethod2(t);
        case Q.C
        _b.testmethod3(t);
        case Q.D
        _b.testmethod4(t);
    }}

我尝试了 if 条件而不是 if 但含义是一样的。 此代码是否违反单一职责原则或通用代码?

这段代码是否违反了单一职责原则或通用代码?如果是,请告诉我如何使用开关盒进行管理。

single-responsibility-principle generalized-method-of-moments
1个回答
0
投票

恕我直言,它只是忽略了 SRP 的存在。它本身并不违背它,因为它没有处理明确的职责。 你的方法才是真正的问题。一般来说,像这样的开关对你来说应该是一种代码味道。我不知道你到底想在这里做什么,但你必须利用多态性或实现一个服务类来负责处理这些选择。 顺便说一句,当你没有后备案例时,为什么还要在这里使用开关?

© www.soinside.com 2019 - 2024. All rights reserved.