В этой статье описывается использование мостового режима для реализации функций переключения и освещения. Поделитесь этим для вашей ссылки, следующим образом:
1. Определение шаблона
Мостовый режим, также известный как мост, в программных системах, благодаря своей собственной логике, существует два или более измерений изменений. Как справиться с такими многомерными изменениями, режим Bridge позволяет программной системе легко меняться в нескольких направлениях без введения дополнительной сложности.
Три ключевых слова режима моста: абстракция, реализация и развязка.
2. Примеры модели
1. Метод анализа мостикового режима
Мы заимствуем освещение, чтобы проиллюстрировать этот режим.
Без наследства используйте метод комбинации объектов, чтобы превратить прочную связь между переключателями и светом в слабые отношения.
2 Модель статического класса мостового режима
3 примеры кода
3.1 Создайте электрический световой интерфейс
Package com.demo.bridge.lights;/** * Интаксий света * * @author * */public interface ilight {// Включить текущий public void ElectricConnected (); // освещение публичного пустого света (); // текущий Off Public void ElectricClosed ();}3.2 Создать общие переключатели
Пакет com.demo.bridge.switchs; import com.demo.bridge.lights.ilight;/** * Clift Class верхнего уровня * * @author * */public class baseswitch {// Использовать комбинацию, чтобы установить Ilight для внутреннего частного свойства, это мост, защищенный Ilight Light; // Создание метода вводит внешний свет в тип общественного базы (Ilight Light) {this.light = light; } / *** Light на метод* / public final void makelight () {// Включите переключатель, чтобы включить ток this.light.electricconnected (); // освещение this.light.light (); // Выключите переключатель, чтобы выключить ток this.light.electricclosed (); }}3.3 Создайте удаленный переключатель
package com.demo.bridge.switchs.sub;import com.demo.bridge.lights.ILight;import com.demo.bridge.switchs.BaseSwitch;/** * The remote control switch inherits the BaseSwitch extension function* * @author * */public class RemoteControlSwitch extends BaseSwitch{ // Construct method public RemoteControlSwitch(ILight light) { супер (свет); } / *** Используйте переключатель дистанционного управления, чтобы управлять светом на** @param operatorcolor* Light Color* / public final void makeremotelight (int operacolor) {// Включите переключатель, чтобы включить ток this.light.electricConnected (); // Light this.light.light (); String color = ""; Switch (opercolor) {case 1: color = "теплый цвет"; перерыв; Случай 2: цвет = "синий"; перерыв; Случай 3: цвет = "красный"; перерыв; по умолчанию: color = "белый"; перерыв; } System.out.println ("... теперь" + color + "!"); // закрыть переключатель, чтобы выключить ток }}3.4 Реализация лампы накаливания
пакет com.demo.bridge.lights.impl; import com.demo.bridge.lights.ilight;/** * Реализация лампы накаливания * * @author * */public Class. } // Включите текущий public void ElectricConnected () {System.out.println ("Лампа накаливания включена ..."); } // Освещение public void Light () {System.out.println ("Lighcecent Lighting!"); }}3.5 Реализация хрустальной лампы
Пакет com.demo.bridge.lights.impl; import com.demo.bridge.lights.ilight;/** * реализации Crystallight * @author * */public Class Crystallight реализует ilight {// ток Off Public void Electricclose () {System.out.println («Crystallight был отключен ...»); } // Включите текущий public void ElectricConnected () {System.out.println ("Crystallight был включен ..."); } // Освещение public void Light () {System.out.println ("Lightal Lames Lames!"); }}3.6 Общая лампа накаливания общего переключателя, хрустальная лампа управления дистанционным переключателем
Пакет com.demo; import com.demo.bridge.lights.ilight; import com.demo.bridge.lights.impl.crystallight; import com.demo.bridge.lights.impl.incandescentlight; импорт com.demo.bridge.switchs.baseswitch; импорт com.demo.bridge.switchs.sub.sub.RemotecOntroloCONTROLCONTROLCONTROLCONTROLCONTROLCHONTROLCHONT @Author * */public Class ClientForbridge {/** * @param args */public static void main (string [] args) {// экземпляр закалится ilight ylightcentlight = new Lecandescentlight (); // экземпляр хрустальной лампы ilight crystallight = new Crystallight (); // Общий переключатель System.out.println ("- General Switch--"); BasesWitch Switch1 = новый BasesWitch (LegnescessCellight); Switch1.makelight (); System.out.println ("/n-- Удаленный переключатель управления-"); // переключатель дистанционного управления remotecontrolswitch = new RemoteControlswitch (Crystallight); remotecontrolswitch.makeremotelight (1); }}Результаты работы:
- Общее переключение-
Лампа накаливания была включена ...
Освещение лампы накаливания!
Лампа накаливания была выключена ...
- переключатель дистанционного управления-
Хрустальная лампа была включена ...
Хрустальная лампа освещение!
... Сейчас тепло!
Хрустальная лампа была выключена ...
3.7. Кристаллическая лампа управления общим переключателем, лампа управления накаливанием дистанционного управления
Пакет com.demo; import com.demo.bridge.lights.ilight; import com.demo.bridge.lights.impl.crystallight; import com.demo.bridge.lights.impl.incandescentlight; импорт com.demo.bridge.switchs.baseswitch; импорт com.demo.bridge.switchs.sub.sub.RemotecOntroloCONTROLCONTROLCONTROLCONTROLCONTROLCHONTROLCHONT @Author * */public Class ClientForbridge {/** * @param args */public static void main (string [] args) {// Пример заклинания ilight ylight officentlight = new Lecandescentlight (); // Пример хрустальной лампы ilight crystallight = new Crystallight (); // Общий переключатель System.out.println ("- General Switch--"); Baseswitch Switch1 = новый BasesWitch (Crystallight); Switch1.makelight (); System.out.println ("/n-- Удаленный переключатель управления-"); // переключатель дистанционного управления remoteControlSwitch = new RemoteControlSwitch (Lecandescestlight); remotecontrolswitch.makeremotelight (1); }}Результаты бега
- Общее переключение-
Хрустальная лампа была включена ...
Хрустальная лампа освещение!
Хрустальная лампа была выключена ...
- переключатель дистанционного управления-
Лампа накаливания была включена ...
Освещение лампы накаливания!
... Сейчас тепло!
Лампа накаливания была выключена ...
3. Принципы дизайна
1 Попробуйте использовать агрегацию объектов слабых ассоциаций и избегать использования сильных ассоциаций наследования.
2 Абстракция и развязка реализации.
4. Используйте случаи
Я не хочу фиксированной связной взаимосвязи между абстрактным классом и частью реализации
Части абстракции и реализации 2 классов должны быть расширены с помощью метода молчания.
3 Модификация абстрактной реализации не влияет на клиента, то есть код клиента не должен быть перекомпилирован.
5. Статическая классная диаграмма моста мостового режима
Для получения дополнительной информации об алгоритмах Java, читатели, которые заинтересованы в этом сайте, могут просмотреть темы: «Учебное пособие по структуре данных Java и алгоритм», «Сводка операции Java Dom Node», «Сводка Java File и каталог
Я надеюсь, что эта статья будет полезна для всех Java Programming.