Пример #1
0
        public void Print(string value)
        {
            //Liskov substitution  prensibine göre kalıtım sırasındaki bir alt sınıf üst sınıfın tüm özelliklerini tüm metotlarını
            //kullanabilmelidir. Printerlardan biri scan özelliğine sahip değildi. Base printerda önceki yapıda yanlış tanımlanmıştı.
            //artık scan özelliği IScan interfacesine alınarak, scanlama özelliği olan printer classları bu interfaceden de implement edilmelidir. Böylece daha doğru bir yapıya kavuşmuş oluruz.
            _canonScanner.Scan(value);
            _canonPrinter.Print(value);



            _hpPrinter.Print(value);
        }
        /// <summary>
        /// Public method call for print
        /// </summary>
        /// <param name="printer">printer for print</param>
        /// <param name="stream">data stream</param>
        public void Print(BasePrinter printer, Stream stream)
        {
            if (printer == null)
            {
                throw new ArgumentNullException($"Argument {nameof(printer)} is null");
            }

            if (stream == null)
            {
                throw new ArgumentNullException($"Argument {nameof(printer)} is null");
            }

            if (!this.Contains(printer))
            {
                throw new ExistPrinterException($"Printer {nameof(printer)} is absent in list. Please add new printer and than print");
            }

            printer.Print(stream);
        }