gpt4 book ai didi

c# - 使用标记类来控制逻辑流

转载 作者:太空狗 更新时间:2023-10-29 20:58:00 25 4
gpt4 key购买 nike

我查看了一些代码,发现我的一位同事正在使用“标记类”来控制程序逻辑(参见下面的人为示例)。它似乎工作得很好,代码读起来也很好,但就是有点味道……

namespace ConsoleApplication4983
{
public class MyClass
{
static void Main()
{
var c = new MyClass();
c.DoSomething(new Sequential());
c.DoSomething(new Random());
}

public void DoSomething(ProcessingMethod method)
{
if (method is Sequential)
{
// do something sequential
}
else if (method is Random)
{
// do something random
}
}
}

public class ProcessingMethod {}
public class Sequential : ProcessingMethod {}
public class Random : ProcessingMethod {}
}

达到相同效果的更好方法是什么?枚举?属性?

最佳答案

标记接口(interface)是一种更好的做法,因为它们提供了更大的灵 active 。

但是在这种特定情况下,我认为虚拟分派(dispatch)是更好的解决方案。

using System;

namespace ConsoleApplication4983
{
public class MyClass
{
static void Main()
{
var c = new MyClass();
c.DoSomething(new Sequential());
c.DoSomething(new Random());
}

public void DoSomething(ProcessingMethod method)
{
method.Foo();
}
}

public class ProcessingMethod
{
public virtual void Foo() { }
}
public class Sequential : ProcessingMethod
{
public override void Foo() { }
}
public class Random : ProcessingMethod
{
public override void Foo() { }
}
}

关于c# - 使用标记类来控制逻辑流,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/835140/

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