gpt4 book ai didi

c# - 需要一个模式来为每个实例方法模式调用 Verify 方法

转载 作者:行者123 更新时间:2023-11-30 12:54:03 25 4
gpt4 key购买 nike

我有以下代码:

class Foo
{
public Foo()
{
Size = true;
}

private bool _size;

protected bool Size
{
get { _size; }
set { _size = value; }
}
}

class CrazyFoo : Foo
{
public void First()
{
if (!Size)
return;
}

public void Second()
{
if (!Size)
return;
}
public void Finished()
{
if (!Size)
return;
}
}

实现这种模式的最佳方式是什么,因为它让我疯狂地打字

   if(!Size) return;

也许我可以用属性或 AOP 来做?

最好和最简单的方法是什么?

谢谢

最佳答案

如果太多方法的开头有相同的guard语句,可以创建一个名为executeWithGuard的方法:

private void executeWithGuard(Action method)
{
if (HeadSize) method();
}

然后你可以这样做:

public void ScreenFirstShot()
{
executeWithGuard(() =>
{
// code here
});
}

public void ScreenSecondShot()
{
ExecuteWithGuard(() =>
{
// code here
});
}
public void CrazyUp()
{
ExecuteWithGuard(() =>
{
// code here
});
}

执行此操作的代码并不少......事实上,可能有更多代码,但它确实允许您在保护条件发生变化时不必执行查找/替换。不过,我只建议将其作为最后的手段。您真正的问题很可能是您在调用树的下方进行验证。如果您能在更高的层次上做到这一点,您就可以避免所有这些验证。

还有

看看 null object patttern .这种模式可以在一些特殊情况下使用,以防止或简化状态检查。

另外(修订版 2)

很难知道您的意图是什么,因为问题侧重于特定的解决方案,但如果您按顺序执行这些方法,则可以考虑使用 strategy pattern ,并将支票放入您的基本策略类中。

关于c# - 需要一个模式来为每个实例方法模式调用 Verify 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/782729/

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