Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- class Strategy
- {
- public interface IStrategy
- {
- void Algorithm(string data);
- }
- public class ProcessingNumberSign : IStrategy
- {
- public void Algorithm(string data)
- {
- DoSomething(data);
- }
- private void DoSomething(string data)
- {
- throw new NotImplementedException();
- }
- }
- public class ProcessingAsterisk : IStrategy
- {
- public void Algorithm(string data)
- {
- }
- }
- class StreamProcesser
- {
- public void ProcessStream(Stream stream)
- {
- using (StreamReader sr = new StreamReader(stream))
- {
- while (!sr.EndOfStream)
- {
- var symb = ReadSymbol(sr);
- DoWork(sr, symb);
- }
- }
- }
- private static string ReadSymbol(StreamReader sr)
- {
- var symb = sr.Read().ToString();
- return symb;
- }
- public static void DoWork(StreamReader sr, string op)
- {
- switch (op)
- {
- case "#":
- new ProcessingNumberSign().Algorithm(op);
- break;
- case "*":
- StringBuilder dataStringBuilder = new StringBuilder();
- int dataSum = 0;
- while (!sr.EndOfStream)
- {
- var symb = ReadSymbol(sr);
- if (symb == ";")
- break;
- dataStringBuilder.Append(symb);
- dataSum += int.Parse(symb);
- }
- if (dataSum % 2 == 0)
- {
- new ProcessingAsterisk().Algorithm(dataStringBuilder.ToString());
- }
- break;
- }
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement