C#/이것이 C#이다

38. 인터페이스 예제1, 2 복습

Rainbow🌈Coder 2022. 2. 22. 11:15
728x90

<예제 1>

using System;
using System.IO;

namespace Interface
{
    interface ILogger
    {
        void WriteLog(string message);
    }

    class ConsoleLogger : ILogger
    {
        public void WriteLog(string message)
        {
            Console.WriteLine("{0} {1}",DateTime.Now.ToLocalTime(),message);
        }
    }

    class ClimateMonitor
    {
        private ILogger logger;
        public ClimateMonitor(ILogger logger)
        {
            this.logger = logger;
        }
        public void start()
        {
            while(true)
            {
                Console.WriteLine("온도를 입력해주세요. : ");
                string temperature = Console.ReadLine();
                if (temperature == "")
                    break;
                logger.WriteLog("현재 온도 : "+temperature);
            }
        }

    }

    class MainApp
    {
        static void Main(string[] args)
        {
            ClimateMonitor monitor = new ClimateMonitor(new ConsoleLogger());
            monitor.start();
        }
    }
}

 

<출력 결과>

온도를 입력해주세요. :
99.9
2022-02-22 오전 11:03:57 현재 온도 : 99.9
온도를 입력해주세요. :
11.1
2022-02-22 오전 11:04:03 현재 온도 : 11.1
온도를 입력해주세요. :
234
2022-02-22 오전 11:04:05 현재 온도 : 234
온도를 입력해주세요. :

 

 

<예제 2>

using System;
using System.IO;

namespace Interface
{
    interface ILogger
    {
        void WriteLog(string message);
    }

    class ConsoleLogger : ILogger
    {
        public void WriteLog(string message)
        {
            Console.WriteLine("{0} {1}",DateTime.Now.ToLocalTime(),message);
        }
    }

    class FileLogger : ILogger
    {
        private StreamWriter writer;
        public FileLogger(string path)
        {
            writer = File.CreateText(path);
            writer.AutoFlush = true;
        }
        public void WriteLog(string message)
        {
            writer.WriteLine("{0} {1}",DateTime.Now.ToShortDateString(),message);
        }
    }

    class ClimateMonitor
    {
        private ILogger logger;
        public ClimateMonitor(ILogger logger)
        {
            this.logger = logger;
        }
        public void start()
        {
            while(true)
            {
                Console.WriteLine("온도를 입력해주세요. : ");
                string temperature = Console.ReadLine();
                if (temperature == "")
                    break;
                logger.WriteLog("현재 온도 : "+temperature);
            }
        }

    }

    class MainApp
    {
        static void Main(string[] args)
        {
            ClimateMonitor monitor = new ClimateMonitor(new FileLogger("0222Test.txt"));
            monitor.start();
        }
    }
}

<출력 결과>

온도를 입력해주세요. :
12.456767
온도를 입력해주세요. :

<메모장 상태 확인>

728x90