이 기사에서는 스위치 및 조명 조명 기능을 구현하기 위해 브리지 모드를 사용하는 방법에 대해 설명합니다. 다음과 같이 참조에 대해 공유하십시오.
1. 패턴 정의
소프트웨어 시스템에서 브리지 모드라고도하는 브리지 모드는 자체 논리로 인해 두 가지 이상의 차원의 변경 사항이 있습니다. 이러한 다차원 변경을 처리하는 방법 브리지 모드를 사용하면 소프트웨어 시스템이 추가 복잡성을 도입하지 않고도 여러 방향으로 쉽게 변경할 수 있습니다.
브리지 모드의 세 가지 키워드는 추상화, 구현 및 분리입니다.
2. 모델의 예
1 브리지 모드 분석 방법
우리는이 모드를 설명하기 위해 조명 조명을 빌립니다.
상속없이 객체 조합 방법을 사용하여 스위치와 조명 간의 강한 관계를 약한 관계로 바꿉니다.
2 브리지 모드 정적 클래스 모델
3 코드 예제
3.1 전기광 인터페이스를 만듭니다
package com.demo.bridge.lights;/** * Light Interface * * @author */public interface ilight {// 현재 공개 void ElectricConnected ()를 켭니다. // 조명 public void light (); // 현재 공개 void ElectricClosed ();}3.2 일반 스위치를 만듭니다
package com.demo.bridge.switchs; import com.demo.bridge.lights.light;/** * 상위 레벨 클래스 스위치 * * @author */public class baseeswitch {// 내부 사유지로 iLight를 설정하기 위해 조합을 사용하여 교량 보호 된 ilight light입니다. // 방법 구성 메소드는 외부 조명 유형을 공개베이스 스위치 (ilight light)에 주입합니다. {this.light = light; } / *** 메소드의 조명* / public final void makelight () {// 스위치를 켜서 현재를 켜려면 this.light.electricconnected (); // 조명 this.light.light (); // 전류를 끄려면 스위치를 끄십시오. }}3.3 원격 스위치를 만듭니다
package com.demo.bridge.switchs.sub; import com.demo.bridge.lights.ilight; import com.demo.bridge.switchs.baseSwitch;/** * 리모컨 스위치는베이스 스위치 확장 기능 * */public Class RemoteControlswitch 확장 기준 (// 구성 방법) {eLOTECONTECONTER (RemOTECONTROL) 슈퍼 (빛); } / *** 원격 제어 스위치를 사용하여 조명을 제어하여** @param operatorcolor* / public final void makeremotelight (int operatacolor) {// 스위치를 켜서 현재 this.light.electricconnected ()를 켜십시오. // 켜지 this.light.light (); 문자열 색상 = ""; 스위치 (Opercolor) {case 1 : color = "따뜻한 색상"; 부서지다; 사례 2 : 색상 = "파란색"; 부서지다; 사례 3 : color = "빨간색"; 부서지다; 기본값 : 색상 = "화이트"; 부서지다; } system.out.println ( "... 지금은" + color + "!"); // 현재를 끄려면 스위치를 닫습니다. }}3.4 백열 램프 구현
package com.demo.bridge.lights.impl; import com.demo.bridge.lights.light;/** * 백열기 램프 구현 * * @author */public class 백열 조명은 ilight {// public void excrnclosed () {System.out.println ( "Increntescent Lamp is is wont is went is the public avoid leconderclosed ("); } // 현재 공개 void ElectricConnected () {System.out.println ( "백열 램프가 켜져 있습니다 ..."); } // 조명 public void light () {System.out.println ( "백열 조명!"); }}3.5 크리스탈 램프 구현
package com.demo.bridge.lights.impl; import com.demo.bridge.lights.light;/** * Crystallight 구현 * @author */public class crystallight emplements ilight {// public void ElectricClosed () {System.out.println ( "CrystalDight가 꺼졌습니다 ..."); } // 현재 공개 void ElectricConnected () {System.out.println ( "Crystallight on wond on wond ..."); } // 조명 public void light () {System.out.println ( "Crystal Lamp Lighting!"); }}3.6 일반 스위치 제어 백열 램프, 원격 스위치 제어 크리스탈 램프
package com.demo;import com.demo.bridge.lights.ILight;import com.demo.bridge.lights.impl.CrystalLight;import com.demo.bridge.lights.impl.IncandescentLight;import com.demo.bridge.switchs.BaseSwitch;import com.demo.bridge.switchs.sub.RemoteControlSwitch;/** * Client Application* * @Author */public class clientForBridge {/** * @param args */public static void main (String [] args) {// 백열등 인스턴스 ILIGHT 백열등 = 새로운 백열등 (); // 크리스탈 램프 인스턴스 ILIGHT CRYSTALLIGHT = NEW CRYSTALLIGHT (); // 일반 스위치 System.out.println ( "- 일반 스위치-"); BaseSwitch Switch1 = 새로운 BaseSwitch (백열등); switch1.makelight (); System.out.println ( "/n- 원격 제어 스위치-"); // 원격 제어 스위치 remotecontrolswitch = 새로운 remotecontrolswitch (crystallight); remotecontrolswitch.makeremotelight (1); }}실행 결과 :
- 일반 스위치-
백열 램프가 켜졌다 ...
백열 램프 조명!
백열 램프가 꺼졌습니다 ...
- 원격 제어 스위치-
크리스탈 램프가 켜졌다 ...
크리스탈 램프 조명!
... 이제 따뜻합니다!
크리스탈 램프가 꺼졌습니다 ...
3.7 일반 스위치 제어 크리스탈 램프, 원격 제어 스위치 제어 백열 램프
package com.demo;import com.demo.bridge.lights.ILight;import com.demo.bridge.lights.impl.CrystalLight;import com.demo.bridge.lights.impl.IncandescentLight;import com.demo.bridge.switchs.BaseSwitch;import com.demo.bridge.switchs.sub.RemoteControlSwitch;/** * Client Application* * @Author */public class clientForBridge {/** * @param args */public static void main (string [] args) {// 백열등 예 ilight 백열등 = 새로운 백열등 (); // 크리스탈 램프 예제 ILIGHT CRYSTALLIGHT = NEW CRYSTALLIGHT (); // 일반 스위치 System.out.println ( "- 일반 스위치-"); BaseSwitch Switch1 = 새로운 BaseSwitch (Crystallight); switch1.makelight (); System.out.println ( "/n- 원격 제어 스위치-"); // 원격 제어 스위치 remotecontrolswitch = 새로운 remotecontrolswitch (백열등); remotecontrolswitch.makeremotelight (1); }}실행 결과
- 일반 스위치-
크리스탈 램프가 켜졌다 ...
크리스탈 램프 조명!
크리스탈 램프가 꺼졌습니다 ...
- 원격 제어 스위치-
백열 램프가 켜졌다 ...
백열 램프 조명!
... 이제 따뜻합니다!
백열 램프가 꺼졌습니다 ...
3. 디자인 원칙
1 약한 연관성의 물체 집계를 사용하고 강력한 상속 연관성을 사용하지 마십시오.
2 추상화 및 구현 분리.
4. 행사를 사용하십시오
1 추상 클래스와 구현 부분 사이의 고정 된 바인딩 관계를 원하지 않습니다.
2 개의 클래스의 추상화 및 구현 부분은 침묵 방법을 통해 확장해야합니다.
3 초록 구현 부분의 수정은 클라이언트에 영향을 미치지 않습니다. 즉, 클라이언트 코드를 다시 컴파일 할 필요가 없습니다.
5. 브리지 모드 정적 클래스 다이어그램
Java 알고리즘에 대한 자세한 내용은이 사이트에 관심이있는 독자들이 주제를 볼 수 있습니다. "Java 데이터 구조 및 알고리즘 자습서", "Java Operation Dom Node Tips 요약", "Java 파일 및 디렉토리 작동 팁 요약"및 "Java Cache Operation Tips의 요약"을 볼 수 있습니다.
이 기사가 모든 사람의 Java 프로그래밍에 도움이되기를 바랍니다.