private static void PaintPictureOnModernGraphicsRendererWithClassAdapter() { var modernGrapicsClassAdapter = new ModernGrapicsClassAdapter(Console.Out); var painter = new CanvasPainter(modernGrapicsClassAdapter); modernGrapicsClassAdapter.BeginDraw(); PaintPicture(painter); modernGrapicsClassAdapter.EndDraw(); }
private static void PaintPicture(CanvasPainter painter) { var triangle = new Triangle( new ShapeDrawingLib.Point(10, 15), new ShapeDrawingLib.Point(100, 200), new ShapeDrawingLib.Point(150, 250) ); var rectangle = new Rectangle(new ShapeDrawingLib.Point(30, 40), 18, 24); Console.WriteLine("Triangle:"); painter.Draw(triangle); Console.WriteLine("Rectangle"); painter.Draw(rectangle); }
static void Main(string[] args) { /* * У вас есть программа, которая отправляет на печать изображения сторонним устройствам. * Для печати изображений у вас есть класс ImageDrawer. * В нём вы работаете с принтером, у него есть понятный интерфейс, который вы себе подключили. * В какой-то момент вам становится необходимо добавить поддержку печати на холсте, * но в классе ImageDrawer использование печати на холсте не предусмотрено, * поэтому нужно либо переписать его, либо можно использовать адаптер, как показано ниже: */ // Создадим интерфейсы устройств: IPrinter.sc и IPainter.cs // Реализуем интерфейсы в классах для работы с устройствами: PaperPrinter.cs и CanvasPainter.cs // Наш класс, с помощью которого мы печатаем (который поддерживает печать на бумаге, но не поддерживает печать на холсте): ImageDrawer.cs // Теперь собственно реализация паттерна: // Нам надо отрисовать изображение на бумаге и холсте // Запускаем класс для отрисовки var imageDrawer = new ImageDrawer(); // Создаем класс для работы с бумажным принтером PaperPrinter paperPrinter = new PaperPrinter(); // Запускаем отрисовку на бумаге imageDrawer.DrawWith(paperPrinter); // Теперь нужна печать на холсте CanvasPainter canvasPainter = new CanvasPainter(); // используем адаптер IPrinter imagePrinter = new CanvasPainterToPrinterAdapter(canvasPainter); // Запускаем печать на холсте imageDrawer.DrawWith(imagePrinter); Console.Read(); }
public CanvasPainterToPrinterAdapter(CanvasPainter canvasPainter) { _canvasPainter = canvasPainter; }