我有一个我想要实现的类,但是有很多条件逻辑,所以我决定实现一个构建器(如)模式。这些setter几乎只是要设置的标志
private class MockBuilder
{
private bool _flag1 = false;
private bool _flag2 = false;
// arbitrarily long amount of flags here
public MockBuilder()
{
}
public void DoFlag1(bool value = true)
{
_flag1 = value;
}
public void DoFlag2(bool value = true)
{
_flag2 = value;
}
public builtObject Build()
{
// Build with current flags
}
}
长话短说,我查看了设置者的默认参数和一些问题:c#: getter/setter 并且想知道是否还有更多" C#"
的方式public bool flag1 { get; set(value = true); }
最终目标是能够像这样调用构建器
var object = new MockBuilder();
builder
.flag1()
.flag3()
// etc...
.generate();
C#是否为setter实现某种默认值?这是一个很好的使用建设者模式?我应该一起使用不同的模式吗?
答案 0 :(得分:1)
使用像这样的位掩码:
public enum ThingsToDo
{
// use powers of 2!
DoThis = 1 << 0,
DoThat = 1 << 1,
WhileYouAreAtIt = 1 << 2,
AndFinally = 1 << 3
}
class Program
{
static void Main(string[] args)
{
var First = ThingsToDo.DoThat | ThingsToDo.DoThis;
var Next = ThingsToDo.WhileYouAreAtIt | ThingsToDo.AndFinally;
// ...
if ((First & ThingsToDo.DoThis) == ThingsToDo.DoThis) {
// do this
}
if ((Next & ThingsToDo.WhileYouAreAtIt) == ThingsToDo.WhileYouAreAtIt)
{
// do while you are at it
}
}
}