1. Definition
Separate the abstract part from its implementation so that they can all be independently changed.
2. Class Diagram
Abstraction: Abstract part of the interface, usually in this object, to maintain an implementation part of the object reference, the method inside the abstract method, you need to call the implementation of the object to complete.
Refinedabstraction: An interface that extends the abstraction section
Implementor: Implementing Partial interfaces
Concreteimplementor: The object that implements Implementor specifically
3. Example
PackageCom.jerry.designpattern;/** * * @authorJerry * @date February 9, 2015 PM 10:46:29*/ Public Abstract classAbstractmessage {protectedIMessage msg; Publicabstractmessage (IMessage msg) { This. msg =msg; } Public Abstract voidsendMessage (String message, string user);} PackageCom.jerry.designpattern;/** * * @authorJerry * @date February 9, 2015 PM 10:50:56*/ Public classCommonmessageextendsabstractmessage{ Publiccommonmessage (IMessage msg) {Super(msg); //TODO auto-generated Constructor stub} @Override Public voidsendMessage (String message, string user) {//TODO auto-generated Method Stub This. Msg.send (message, user); }} PackageCom.jerry.designpattern;/** * * @authorJerry * @date February 9, 2015 PM 10:44:43*/ Public InterfaceIMessage {voidSend (String message, string user);} PackageCom.jerry.designpattern;/** * * @authorJerry * @date February 9, 2015 PM 10:50:07*/ Public classMessageemailImplementsimessage{@Override Public voidSend (String message, string user) {//TODO auto-generated Method StubSYSTEM.OUT.PRINTLN ("Send Message Using mail <" + message + "> to" +user); }} PackageCom.jerry.designpattern;/** * * @authorJerry * @date February 9, 2015 PM 10:59:10*/ Public classMessagephoneImplementsimessage{@Override Public voidSend (String message, string user) {//TODO auto-generated Method StubSYSTEM.OUT.PRINTLN ("Send Message using mobile phone <" + message + "> to" +user); }} PackageCom.jerry.designpattern;/** * * @authorJerry * @date February 9, 2015 PM 10:48:23*/ Public classMessagesmsImplementsimessage{@Override Public voidSend (String message, string user) {//TODO auto-generated Method StubSYSTEM.OUT.PRINTLN ("Send messages using the message in the station <" + message + "> to" +user); }} PackageCom.jerry.designpattern;/** * * @authorJerry * @date February 9, 2015 PM 10:59:50*/ Public classSpecialurgencymessageextendsabstractmessage{ Publicspecialurgencymessage (IMessage msg) {Super(msg); //TODO auto-generated Constructor stub} @Override Public voidsendMessage (String message, string user) {//TODO auto-generated Method StubSYSTEM.OUT.PRINTLN ("Urgent!")); This. Msg.send (message, user); }} PackageCom.jerry.designpattern;/** * * @authorJerry * @date February 9, 2015 PM 10:52:14*/ Public classUrgencymessageextendsabstractmessage{ Publicurgencymessage (IMessage msg) {Super(msg); //TODO auto-generated Constructor stub} @Override Public voidsendMessage (String message, string user) {//TODO auto-generated Method StubSYSTEM.OUT.PRINTLN ("Emergency Information")); This. Msg.send (message, user); This. Warning (); } Private voidWarning () {//TODO auto-generated Method StubSYSTEM.OUT.PRINTLN ("Please handle as soon as possible"); }} PackageCom.jerry.designpattern;/** * * @authorJerry * @date February 9, 2015 PM 10:54:10*/ Public classClient { Public Static voidMain (string[] args) {IMessage SMS=Newmessagesms (); IMessage Email=NewMessageemail (); IMessage Phone=NewMessagephone (); Abstractmessage Commonmessage=Newcommonmessage (SMS); Commonmessage.sendmessage ("Please gather at Huaguoshan tomorrow 9 o'clock in the Morning", "pig"); Abstractmessage Urgencymessage=Newurgencymessage (email); Urgencymessage.sendmessage ("There are monsters nearby, Goku", "Goku"); Abstractmessage Specialurgencymessage=Newspecialurgencymessage (phone); Specialurgencymessage.sendmessage ("Master was taken by the monster!", "Big bro"); }}
4. What is bridging
The so-called bridging, popular speaking is in different things between the tower of a bridge, so that they can connect, can communicate with each other and use.
5. Advantages of bridging
A. Separating the abstraction and implementation parts
B. Improved scalability
C. Dynamic switching implementation
D. Reducing the number of subclasses
[design mode] Bridging mode