[design mode] Bridging mode

Source: Internet
Author: User

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

Related Article

Contact Us

The content source of this page is from Internet, which doesn't represent Alibaba Cloud's opinion; products and services mentioned on that page don't have any relationship with Alibaba Cloud. If the content of the page makes you feel confusing, please write us an email, we will handle the problem within 5 days after receiving your email.

If you find any instances of plagiarism from the community, please send an email to: info-contact@alibabacloud.com and provide relevant evidence. A staff member will contact you within 5 working days.

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.