Загрузка...
скачать
Реферат на тему:

Цепочка обязанностей


Chain.png

План:

    Введение
  • 1 Применение
  • 2 Примеры
    • 2.1 Пример на C#
    • 2.2 Пример на VB.NET
  • Источники

Введение

Цепочка обязанностей — поведенческий шаблон проектирования, предназначенный для организации в системе уровней ответственности.


1. Применение

Шаблон рекомендован для использования в условиях:

  • в разрабатываемой системе имеется группа объектов, которые могут обрабатывать сообщения определенного типа;
  • все сообщения должны быть обработаны хотя бы одним объектом системы;
  • сообщения в системе обрабатываются по схеме «обработай сам либо перешли другому», то есть одни сообщения обрабатываются на том уровне, где они получены, а другие пересылаются объектам иного уровня.

2. Примеры

2.1. Пример на C#

Исходный текст на языке C#  
using System;
 
namespace ChainOfResponsibility
{
    class Program
    {
        static void Main(string[] args)
        {
            Handler start = null;
            for (int i = 5; i > 0; i--)
            {
                Console.WriteLine("Handler " + i + " deals up to a limit of " + i * 1000);
                start = new Handler(i, start);
            }
 
            int[] a = { 50, 2000, 1500, 10000, 175, 4500 };
            foreach (int i in a)
                Console.WriteLine(start.HandleRequest(i));
        }
    }
 
    class Handler
    {
        Handler next;
        int id;
        public int Limit { get; set; }
 
        public Handler(int id, Handler handler)
        {
            this.id = id;
            Limit = id * 1000;
            next = handler;
        }
 
        public string HandleRequest(int data)
        {
            if (data < Limit)
                return "Request for " + data + " handled at level " + id;
            else if (next != null)
                return next.HandleRequest(data);
            else return ("Request for " + data + " handled BY DEFAULT at level " + id);
        }
    }
}

2.2. Пример на VB.NET

Исходный текст на языке VB.NET  
Namespace ChainOfResponsibility
    Class Program
 
        Shared Sub Main()
            Dim start As Handler = Nothing
 
            For I As Integer = 5 To 1 Step -1
                Console.WriteLine("Handler " & I & " deals up to a limit of " & I * 1000)
                start = New Handler(I, start)
            Next
 
            Dim A As Integer() = {50, 2000, 1500, 10000, 175, 4500}
            For Each I As Integer In A
                Console.WriteLine(start.HandleRequest(I))
            Next
 
            Console.Read()
        End Sub
    End Class
 
    Class Handler
        Private NextHandler As Handler
        Private m_Limit As Integer
        Private id As Integer
 
        Public Property Limit() As Integer
            Get
                Return m_Limit
            End Get
            Set(ByVal value As Integer)
                m_Limit = Value
            End Set
        End Property
 
        Public Sub New(ByVal id As Integer, ByVal handler_1 As Handler)
            Me.id = id
            Limit = id * 1000
            NextHandler = handler_1
        End Sub
 
        Public Function HandleRequest(ByVal data As Integer) As String
            If data < Limit Then
                Return "Request for " & data & " handled at level " & id
            ElseIf NextHandler IsNot Nothing Then
                Return NextHandler.HandleRequest(data)
            Else
                Return ("Request for " & data & " handled BY DEFAULT at level " & id)
            End If
        End Function
    End Class
End Namespace

Источники

скачать

Данный реферат составлен на основе статьи из русской Википедии. Синхронизация выполнена 14.07.11 20:03:05

Похожие рефераты: Неисполнение обязанностей налогового агента, При исполнении служебных обязанностей (фильм), Цепочка, Анальная цепочка, Навигационная цепочка, Пищевая цепочка, Цепочка ББГКИ, Мартышкина цепочка (узел), Цепочка уравнений Боголюбова.

Категории: Шаблоны проектирования.

Текст доступен по лицензии Creative Commons Attribution-ShareAlike.