要求是
例如:在可枚举的1到100整数集合中,当发现3可被3整除时,3将被单词"FUZZ“替换,因此像6,9,12这样的整数将被"FUZZ”替换。
当发现5被5整除时,5将被"BUZZ“一词取代,因此10,15(可被3和5整除的)将被FUZZBIZZ取代,而20将再次被替换为"BIZZ”。
为了实现这一逻辑,我认为策略和单责任原则适用于此,因为在两种划分场景中,我可以为分区3和除以5提供抽象的界面策略,以及显示"FUZZ“和"BIZZ”的显示策略的另一个接口。
请纠正我或指导我正确的设计模式和坚实的原则,如SRP/开放封闭原则的固体。
发布于 2013-06-08 19:16:16
学校作业?我不明白为什么对给定的需求需要设计模式,因为它只需要几行代码就可以实现。设计模式可以是强大的,但只应在必要时使用。
static void Main(string[] args)
{
foreach(var item in Generate(1, 1000))
{
Console.WriteLine("{0}: {1}", item.Key, item.Value);
}
}
private static IEnumerable<KeyValuePair<int, string>> Generate(int init, int max)
{
int current = init;
var stringBuilder = new StringBuilder();
while (current <= max)
{
if (current % 3 == 0) stringBuilder.Append("FUZZ");
if (current % 5 == 0) stringBuilder.Append("BIZZ");
if (current % 7 == 0) stringBuilder.Append("????");
yield return new KeyValuePair<int, string>(current, stringBuilder.ToString());
stringBuilder.Clear();
current++;
}
}Sidenote:迭代器模式使用foreach实现,构建器模式使用StringBuilder实现。但两者都不是我自己实现的。
https://stackoverflow.com/questions/16999440
复制相似问题