
Uml-диаграммы
Шаблон делегирования
Основные шаблоны
Описание
Шаблон делегирования (англ. Delegationpattern) – это способ, которым объект внешне выражает некоторое поведение, но в реальности передаёт ответственность за выполнение этого поведения связанному объекту.
Уместность применения
Шаблон даёт возможность изменить поведение конкретного экземпляра объекта вместо создания нового класса путем наследования. Таким образом, если при работе с объектом велика вероятность возникновения такой ситуации, следует использовать шаблон делегирования.
Преимущества, достигаемые при применении шаблона
Применение шаблона делегирования ускоряет процесс внесения серьёзных изменений в логику работы программы. Например, если используя данный шаблон, был написан класс, обеспечивающий хранение данных в XMLфайлах, то без труда можно начать хранить данные в БД. Для этого потребуется написать новый обработчик и назначить его ответственным за хранение данных, что гораздо проще, чем переписать весь исходный класс.
Недостатки шаблона
Шаблон обычно затрудняет оптимизацию по скорости в пользу улучшенной чистоты абстракции.
Детали реализации
Шаблон реализуется следующим образом:
using System;
using System.Text;
namespace Lab2_4
{
interface IDelegate
{
double sum(double a, double b);
}
class GoodStudent : IDelegate
{
public double sum(double a, double b) { return a + b; }
}
class BadStudent : IDelegate
{
public double sum(double a, double b)
{
Random rand = new Random();
return rand.Next(5, 10);
}
}
class Delegate : IDelegate
{
IDelegate student = new GoodStudent();
public double sum(double a, double b)
{
return student.sum(a, b);
}
public void setStudent(IDelegate s)
{
student = s;
}
}
class Program
{
static void Main(string[] args)
{
Delegate teacher = new Delegate();
Console.WriteLine("Хороший студент: 2 + 2 = " + teacher.sum(2, 2));
teacher.setStudent(new BadStudent());
Console.WriteLine("Плохой студент: 2 + 2 = " + teacher.sum(2, 2));
Console.ReadLine();
}
}
}
Uml-диаграммы
Литература
Приёмы объектно-ориентированного проектирования. Паттерны проектирования. – СПб.: Питер, 2011. – 368 с.: ил.
PHP: объекты, шаблоны и методики программирования.3-е изд.: Пер. с англ. – М. : ООО «И.Д. Вильямс», 2011. – 560 с. : ил. – Парал. тит. англ.