В этой статье описывается проблема решения распределения красного вина на основе модели прокси Java. Поделитесь этим для вашей ссылки, следующим образом:
1. Определение шаблона
В прокси -режиме два объекта участвуют в обработке одного и того же запроса. Полученный запрос поручен прокси -объектом реальному объекту для обработки. Прокси -объект управляет доступом к запросу, который играет посредник между клиентским приложением и реальным объектом. Прокси -режим использует агрегацию объектов вместо наследования, эффективно уменьшая связь между программными модулями.
2. Примеры модели
1 Анализ шаблона
Мы заимствуем распределение вина, чтобы проиллюстрировать эту модель.
2 прокси -режим статической классовой диаграммы
3 примеры кода
3.1 Интерфейс фабрики красного вина 1 Iredwine
пакет com.demo.real;/** * Интерфейс красного вина * * @author * */public interface iredwine {// метод производства Public void Product (); // метод продажи вина Public void Sell ();}3.2 Реализация RealredWineFactory на фабрике красного вина
пакет com.demo.real.impl; import com.demo.real.iredwine;/** * Настоящая фабрика производства вина * * @author * */public class Realredwinefactory реализует iRedwine {// Метод производства красного вина @Override public void Product () {System.out.println («Фария красного вина производит Red Wine ...»); } // Метод продажи Wine public void sell () {System.out.println ("Красное винное завод продает красное вино ..."); }}3.3 Создайте красного винного агента - RedwineProxy
пакет com.demo.proxy; import com.demo.real.iredwine;/** * Агент красного вина * * @author * */public Class RedwineProxy реализует Iredwine {// Реал Красного вина Частный финал Iredwine Redwine; // Агент разрешение на продажу Red Wine Private Final Boolean разрешение = true; // метод строительства по умолчанию Public RedwineProxy (Iredwine Redwine) {this.redwine = Redwine; } // Метод агента для производства красного вина (агент не производит красное вино и берет вино с реальной фабрики для продажи) @Override public void product () {// определить, имеет ли агент право быть красным вином, если (это. Процесс) {// Агент имеет право продавать красное вино, является юридической системой. System.out.println («Агент получает заказ и уведомляет фабрику для производства ...»); this.redwine.product (); } else {System.out.println ("[Это нелегальный агент красного вина!]"); }} // Как продать красное вино для агента @Override public void sell () {if (this.permission) {this.redwine.sell (); System.out.println («Агент получает оптовое красное вино с завода и продает его по более высокой цене, зарабатывая от него определенную разницу ...»); } else {System.out.println ("[Это нелегальный агент красного вина!]"); }}}3.4 Пойдите в винный агент, чтобы купить клиент Red Wine
пакет com.demo; import com.demo.proxy.redwineproxy; import com.demo.real.iredwine; import com.demo.real.impl.reallredwinefactory;/** * Основное приложение * * @author * */public clus Iredwine Realredwinefactory = new RealredWineFactory (); // Получить экземпляр объекта прокси IREDWINE REDWINEPROXY = new RedwineProxy (RealredWineFactory); // Агент производит красное вино (на самом деле реальное производство - это завод) RedwineProxy.Product (); // агент продает красное вино (оптовая цена, затем продает его по более высокой цене, чтобы заработать разницу) RedwineProxy.sell (); }}
4 Результаты работы
[Это легальный агент красного вина]
Агент получил заказ и уведомил фабрику для производства ...
Фабрика красного вина производит красное вино ...
Фабрика красного вина продает красное вино ...
Агент получает оптовое красное вино с завода и продает его по более высокой цене, зарабатывая определенную разницу в цене ...
Iii. Принципы дизайна этого образца
1 задержка загрузки для повышения эффективности системы
2 Принцип единой ответственности
4. Используйте случаи
1 Удаленный прокси: предоставляет локальный прокси для объекта в разных адресных пространствах.
2 Виртуальный агент: если создание объекта занимает много времени, вы можете вызвать его через прокси-объект. Перед созданием реального объекта возвращается ложный вызов. Когда реальный объект создается, соответствующий вызов метода реального объекта возвращается клиенту.
3 Защитный агент управляет доступом к исходному объекту.
4 Умные руководящие принципы заменяют простые указатели, которые выполняют некоторые дополнительные операции при доступе к объектам.
V. Статическая классная диаграмма прокси -режима
Абстрактная роль: общий интерфейс, который объявляет реальные объекты и прокси -объекты.
Реальная роль: целевой объект, который действительно обрабатывает запрос.
Роль агента: Роль объекта прокси содержит ссылки на реальные объекты, поэтому объект прокси может преобразовать запрос в реальные объекты для обработки. В то же время объект прокси может также добавлять дополнительные операции до и после выполнения операции реального объекта.
Для получения дополнительного контента, связанного с Java, читатели, заинтересованные в этом сайте, могут просмотреть темы: «Учебное пособие по структуре данных Java и алгоритм», «Сводка операции Java Operation Dom Узел», «Краткое изложение Java File и Directory Commine» и «Советы по эксплуатации Java Cache»
Я надеюсь, что эта статья будет полезна для всех Java Programming.