Example #1
0
        private static void PaintPictureOnModernGraphicsRendererWithClassAdapter()
        {
            var modernGrapicsClassAdapter = new ModernGrapicsClassAdapter(Console.Out);
            var painter = new CanvasPainter(modernGrapicsClassAdapter);

            modernGrapicsClassAdapter.BeginDraw();
            PaintPicture(painter);
            modernGrapicsClassAdapter.EndDraw();
        }
Example #2
0
        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);
        }
Example #3
0
        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;
 }