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); }