gpt4 book ai didi

c# - 更简洁的抽象方式

转载 作者:太空宇宙 更新时间:2023-11-03 14:20:48 25 4
gpt4 key购买 nike

我正在重构一些旧代码,并对设计决策感到震惊

AbstractClassA
-Step 1
-Step 2
--Step 2.1
--Step 2.2
-Step 3

上面的抽象类有抽象方法Step 1、Step 2和Step 3。Step 2总是需要调用方法2.1和2.2。但是在目前的设计中,步骤2.1和步骤2.2并没有声明为抽象的,而是在每个继承类中实现和调用的。我计划通过将所有这些方法(包括 2.1 和 2.2)拉入一个接口(interface)来重构代码。然后我计划有这个接口(interface)的抽象类实现,其中步骤 2 将调用 2.1 和 2.2。但不知何故,这似乎并不整洁。我想知道这个设计是否有缺陷?

InterfaceA
-Step1
-Step2
-Step 2.1
-Step 2.2
-Step3

最佳答案

听起来您正在寻找的是:

interface IMyInterface
{
void Step1();
void Step2();
void Step3();
}

abstract class MyBaseClass : IMyInterface
{
public abstract void Step1();
public void Step2()
{
Step2_1();
Step2_2();
}
public abstract void Step3();

protected abstract void Step2_1();
protected abstract void Step2_2();
}

使用抽象接口(interface),当你想引用一些通用的东西时,将在运行时使用的确切实例可以改变。使用基类共享实现,因此您可以在每个子类中定义步骤 2.1 和步骤 2.2 中发生的事情,但是您的基类定义步骤 2 表示执行步骤 2.1 然后执行步骤 2.2。

关于c# - 更简洁的抽象方式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5463980/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com