Описание режима агента
Примечание. Как следует из названия, он должен использовать один класс для замены другого класса для выполнения функций метода. Этот рисунок немного похож на декоративный режим. Разница в том, что прокси -режим заменяет клиента для инициализации класса объекта прокси, в то время как декоративный режим выполняется интерфейсом или ссылкой на параметр начального декоратора.
В динамическом объектно-ориентированном языке режим прокси играет роль контроля и изменения класса прокси, а также играет полную скрытую и защищенную роль для класса прокси; Прокси -класс косвенно инициализируется и называется только тогда, когда нам это нужно;
Описание сцены:
Очень распространенный пример аренды дома. Арендаторы хотят арендовать дом, и арендодатель хочет сдать в аренду дом, но ни арендатор, ни арендодатель не имеют много времени, чтобы найти дом или ждать, пока кто -то увидит дом дома, поэтому они идут, чтобы найти агента по недвижимости вместе. Арендодатель доверяет комнату агентству для аренды и продажи. Когда есть подходящий человек, агент займет комнату, чтобы увидеть его и заплатить деньги, чтобы арендовать его, чтобы арендодатель арендовал комнату; Арендатор доверяет дом агентству, чтобы помочь месту в комнате, требуемом агентством. После того, как агент найдет арендатора, они заплатят деньги, чтобы арендовать их, чтобы арендатор мог сдать его в аренду до места, где он живет;
Исходный код экземпляра
Следуйте вышеуказанному примеру для достижения;
1. Категория аренды арендодателя;
Кода -копия выглядит следующим образом:
функция fangdong () {
this.room = 'название номера';
}
Fangdong.prototype.chuzu = function () {
console.log ('землевладельца арендуют комнату:' + this.room);
}
2. Класс посреднического агента:
Кода -копия выглядит следующим образом:
function proxy () {
this.fangdong = new Fangdong ();
}
Proxy.prototype.chuzu = function () {
this.fangdong.chuzu ();
console.log ('Carry Agency Prome после аренды »);
}
3. Как использовать:
Кода -копия выглядит следующим образом:
// арендатор просит агента помочь найти дом;
var proxy = new Proxy ();
proxy.chuzu ();
Посмотрите на вышеупомянутое использование. Класс прокси вообще не доступен на стороне клиента. Просто используйте класс прокси, который можно хорошо использовать в сценарии, когда необходимо защитить определенные процессы бизнес -логики; Использование прокси -режима можно хорошо использовать в классе прокси, который необходимо защитить;
Другие инструкции
Как и режим декоратора, прокси-режим также хорошо отражает принцип объектно-ориентированного мышления о открытости к расширению и модификации закрытия;
Прокси -режим, вы можете использовать интерфейсы или абстрактные классы для регулирования общих интерфейсов: (следующее предоставляет прокси -режим Java)
1. Аннотация Абстракционный метод класса;
Кода -копия выглядит следующим образом:
публичный абстрактный класс дома {
Public void Abstract Chuzu ();
}
открытый класс Fangdong расширяет дом {
Приватная строковая комната = "название комнаты";
@Override
public void Chuzu () {
System.out.println (комната);
}
}
Public Class Proxy Extends House {
Частный Fangdong Fangdong;
public proxy () {
this.fangdong = new Hangdong ();
}
@Override
public void Chuzu () {
this.fandong.chuzu ();
System.out.println («Плата за оплату после аренды»);
}
}
//использовать
House House = новый прокси ();
house.chuzu ();
2. Метод интерфейса:
Кода -копия выглядит следующим образом:
интерфейсный дом {
public void chuzu ();
}
Общедоступный класс Fangdong реализует дом {
Приватная строковая комната = "название комнаты";
@Override
public void Chuzu () {
System.out.println (комната);
}
}
Public Class Proxy реализует дом {
Частный Fangdong Fangdong;
public proxy () {
this.fangdong = new Hangdong ();
}
@Override
public void Chuzu () {
this.fandong.chuzu ();
System.out.println («Плата за оплату после аренды»);
}
}
//использовать
House House = новый прокси ();
house.chuzu ();