Архитектура движка.Статьи

Паттерны GoF - Proxy (лекция)

Автор:

<MiF> Proxy
<MiF> Назначение - является заместителем объекта и контролирует доступ к нему
<MiF> О применении можно часами говорить
<MiF> ибо все умные указатели - это и есть proxy
<MiF> Участники:
<MiF> 1. Proxy - хранит ссылку на реальный Subject, предоставляет интерфейс идентичный Subject, контролирует доступ к нему, может отвечать за его удаление и т.д.
<MiF> 2. Subject - субъект, имеет общий интерфейс для Proxy и RealSubject
<MiF> 3. RealSubject - реальный субъект, представленный заместителем
<MiF> Может быть сразу реальный субъект, без Subject
<MiF> Что в результате:
<MiF> 1. пользователь не знает, где на самом деле находится реальный субъект
<MiF> 2. можно много всего намутить, что и не перечислить :)

  • MiF sets mode: -m
  • <kas> т.е. оно much like Pimpl?
    <Rageous> не... при чем тут эта идиома?
    <kas> эээ
    <Rageous> примеры нужны, будет понятнее
    <Rageous> помимо умных указателей :)
    <MiF> примеры сначала на словах
    <MiF> запустил я эксплорер
    <kas> чем пимпл не прокси?
    <MiF> залез на геймдев по диалапу, льется медленно
    <MiF> пока картинок нет мне показывают рамочки
    <MiF> вот это рамочка - Subject, картинка - RealSubject, а обращение ко всему через прокси
    <MiF> то есть пока картинка не загрузилась прокси подсовывает рамочку, а потом - картинку
    <MiF> примеров можно нагородить вагон
    <kas> [21:58:32] kas: чем пимпл не прокси?
    <MiF> имхо это прокси
    <kas> ладна
    <Rageous> а по-моему это с++-ная заморочка :)
    <kas> не
    <kas> ето идиома
    <kas> сокрытие реализации объектом
    <kas> чем не прокси :)
    <MiF> нужны ли примеры кода?
    <Rageous> это скорее средство сохранения инкапсуляции
    <Rageous> суть проксии не совсем в инкапсуляции
    <Rageous> хотя мож я и слишком узко его понимаю
    <kas> ну, не важно, едем дальше?
    <Rageous> угу
    <MiF> значимая суть прокси - контроль обращения
    <Rageous> примеры там простые
    <Rageous> т.ч. давайте опустим
    <MiF> так вопросы будут? :)
    <MiF> нет, так нет

    22 января 2006