Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/design-patterns/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如果我必须为动态整数集合中的每个项目显示不同的消息,那么要应用哪种设计模式和可靠原则_C#_Design Patterns - Fatal编程技术网

C# 如果我必须为动态整数集合中的每个项目显示不同的消息,那么要应用哪种设计模式和可靠原则

C# 如果我必须为动态整数集合中的每个项目显示不同的消息,那么要应用哪种设计模式和可靠原则,c#,design-patterns,C#,Design Patterns,要求是 我想创建一个整数的动态集合,这意味着IEnumerable集合可以有1到100、1到500或1到1000个整数 我想遍历集合,在迭代的过程中,我想在每次将每个项除以3、5或7时显示不同的消息 例如:-在1到100的整数的可枚举集合中,当发现3可被3整除时,3将替换为单词“FUZZ”,因此像6,9,12这样的整数将替换为“FUZZ” 当发现5可被5整除时,5将被单词“BUZZ”替换,因此数字10,15(可被3整除,5将被FUZZBIZZ替换,20将再次被单词“BIZZ”替换 我想实现这方面

要求是

  • 我想创建一个整数的动态集合,这意味着IEnumerable集合可以有1到100、1到500或1到1000个整数

  • 我想遍历集合,在迭代的过程中,我想在每次将每个项除以3、5或7时显示不同的消息

  • 例如:-在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/实体的开闭原则。

    学校作业?我不明白为什么需要设计模式来满足给定的需求,因为它只需几行代码即可实现。设计模式功能强大,但只应在必要时使用y

        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++;
            }
        }
    
    static void Main(字符串[]args)
    {
    foreach(生成(11000)中的var项目)
    {
    WriteLine(“{0}:{1}”,item.Key,item.Value);
    }
    }
    私有静态IEnumerable生成(int init,int max)
    {
    int current=init;
    var stringBuilder=新的stringBuilder();
    while(当前)