100分请教一个设计问题?路过的都进来看看,谢谢!
我把问题简化了,简化后是这样的: 
 有两组数据OneGroup,TwoGroup,每组有两个数第一组one,two,第二组three,four, 
 程序接收到数据是一个字符串,例如:OneGrouptypeonedata123,代表第一组数据的one为123,type,data为分隔符.数据经过分析后分别存入one,two,three,four 
 当第一组数据接收完毕的时候存入数据库,并清空,重新开始接收下一组数据,第二组也是这样. 
 我混乱了,不知道这个几个类及接口应该怎么设计.   
 我的想法:onegro=new   onegroup();twogro=new   twogroup();//类里面判断,当变量为空的时候进行+1,当不为空的时候认为是更改数据,不加1,当为1了(从0开始的)进行存入数据库,清空变量操作. 
 但是问题来了,我的数据是在别的类里面出过来的,在别的类里面new了,下一次又new了,那计数的永远也+不到1了吗,而且会清空原来的数,我把他设计成全局的变量程序会变的非常的麻烦,我应该怎么做呢??? 
------解决方案--------------------声明字段有什么问题吗? 
 private onegro = new onegroup(); 
 private twogro = new twogroup();   
 看不明白楼主的问题 
 有没有可调试的代码参考一下
------解决方案--------------------LZ试下 单件模式 
 或者来个简单的,用静态变量,
------解决方案--------------------不会,帮顶了
------解决方案--------------------你的需求描述比较混乱 
 singleton模式的介绍和事例 
 http://www.microsoft.com/china/MSDN/library/enterprisedevelopment/builddistapp/Exploring+the+Singleton+Design+Pattern.mspx?mfr=true 
 上面这篇文章比较老,似乎没有考虑多线趁的安全 
 http://www.yoda.arachsys.com/csharp/singleton.html 
 这篇文章中有考虑多现成安全的例子 
 public sealed class Singleton 
 { 
     static Singleton instance=null; 
     static readonly object padlock = new object();   
     Singleton() 
     { 
     }   
     public static Singleton Instance 
     { 
         get 
         { 
             lock (padlock) 
             { 
                 if (instance==null) 
                 { 
                     instance = new Singleton(); 
                 } 
                 return instance; 
             } 
         } 
     } 
 }   
 但是也是framework1.1版本上的 不过足够用了 
 2.0有个新的关键字 我一下字找不到了 如果你不用多线城那么第一篇文章对你就足够了
------解决方案--------------------public class Group 
 { 
     private string one =  " "; 
     private string tow =  " "; 
     private string three =  " "; 
     private string four =  " "; 
     private string reset_flag =  "0000 "; 
     public Group() 
     {  
     }   
     private void  SaveToDB(string num1,string num2) 
     { 
         //保存到数据库 
     }   
     public void Clear(int flag) 
     { 
         //清空的方法 
         if (flag == 1) 
         { 
             one =  " "; 
             tow =  " "; 
             //将标志位还原为0 
             ChangeFlag(1,  "0 "); 
             ChangeFlag(2, "0 "); 
         } 
         else 
         { 
             three =  " "; 
             four =  " "; 
             //将标志位还原为0 
             ChangeFlag(3,  "0 "); 
             ChangeFlag(4,  "0 "); 
         } 
     } 
     //解析传入字符串,按照解析出来的结果将值赋给相应的数据成员,同时更新reset_flag的对应位上的数字为1; 
     private void ChangeFlag(int num,string des) 
     { 
         reset_flag = reset_flag.Substring(0, num - 1) + des + reset_flag.Substring(num + 1); 
     }   
     public void DecodeNum(string value) 
     {           
         if (解析结果是one) 
         { 
             //给one赋值 
             ChangeFlag(1,  "1 "); 
         } 
         else if (解析结果是tow) 
         { 
             //给tow赋值 
             ChangeFlag(2,  "1 "); 
         } 
         else if (解析结果是three) 
         { 
             //给three赋值 
             ChangeFlag(3,  "1 ");