code_junkie

Design Pattern: Parsing similar, but differing schemas in text files

Nov 12th, 2011
64
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.76 KB | None | 0 0
  1. public interface IDataProvider
  2. {
  3. IOnlinePokerInfo ParseFileInformation(FileInfo input);
  4. }
  5.  
  6. public interface IOnlinePokerInfo
  7. {
  8. int Hand { get; set; }
  9. DateTime DateInfo { get; set; }
  10. List<IPlayer> Players { get; set; }
  11. void ProcessInformation();
  12. }
  13.  
  14. public interface IPlayer
  15. {
  16. string Name { get; set; }
  17. }
  18.  
  19. public class MyOnlinePokerInfo : IOnlinePokerInfo
  20. {
  21. private int hand;
  22. private DateTime date;
  23. private List<IPlayer> players;
  24.  
  25. public int Hand { get { return hand; } set { hand = value; } }
  26. public DateTime DateInfo { get { return date; } set { date = value; } }
  27. public List<IPlayer> Players { get { return players; } set { players = value; } }
  28.  
  29. public MyOnlinePokerInfo(int hand, DateTime date)
  30. {
  31. this.hand = hand;
  32. this.date = date;
  33. players = new List<IPlayer>();
  34. }
  35.  
  36. public MyOnlinePokerInfo(int hand, DateTime date, List<IPlayer> players)
  37. : this(hand, date)
  38. {
  39. this.players = players;
  40. }
  41.  
  42. public void AddPlayer(IPlayer player)
  43. {
  44. players.Add(player);
  45. }
  46.  
  47. public void ProcessInformation()
  48. {
  49. Console.WriteLine(ToString());
  50. }
  51.  
  52. public override string ToString()
  53. {
  54. StringBuilder info = new StringBuilder("Hand #: " + hand + " Date: " + date.ToLongDateString());
  55. info.Append("nPlayers:");
  56. foreach (var s in players)
  57. {
  58. info.Append("n");
  59. info.Append(s.Name);
  60. }
  61. return info.ToString();
  62. }
  63. }
  64.  
  65. public class MySampleProvider1 : IDataProvider
  66. {
  67. public IOnlinePokerInfo ParseFileInformation(FileInfo input)
  68. {
  69. MyOnlinePokerInfo info = new MyOnlinePokerInfo(1, DateTime.Now);
  70. IPlayer p = new MyPlayer("me");
  71. info.AddPlayer(p);
  72. return info;
  73. }
  74. }
  75.  
  76. public class MySampleProvider2 : IDataProvider
  77. {
  78. public IOnlinePokerInfo ParseFileInformation(FileInfo input)
  79. {
  80. MyOnlinePokerInfo info = new MyOnlinePokerInfo(2, DateTime.Now);
  81. IPlayer p = new MyPlayer("you");
  82. info.AddPlayer(p);
  83. return info;
  84. }
  85. }
  86.  
  87. public class MyPlayer : IPlayer
  88. {
  89. private string name;
  90. public string Name { get { return name; } set { name = value; } }
  91.  
  92. public MyPlayer(string name)
  93. {
  94. this.name = name;
  95. }
  96. }
  97.  
  98. public class OnlinePokerInfoManager
  99. {
  100. static void Main(string[] args)
  101. {
  102. List<IOnlinePokerInfo> infos = new List<IOnlinePokerInfo>();
  103.  
  104. MySampleProvider1 prov1 = new MySampleProvider1();
  105. infos.Add(prov1.ParseFileInformation(new FileInfo(@"c:file1.txt")));
  106.  
  107. MySampleProvider2 prov2 = new MySampleProvider2();
  108. infos.Add(prov2.ParseFileInformation(new FileInfo(@"c:file2.log")));
  109.  
  110. foreach (var m in infos)
  111. {
  112. m.ProcessInformation();
  113. }
  114. }
  115. }
Add Comment
Please, Sign In to add comment