菜鸟硕枫设计模式系列之8 桥接模式
桥接模式将抽象部分与具体实现分离,使得都能独立的变化。它采用注入实现的方式来实现解耦的,而通常注入的行为只是被注入者行为的一部分。桥接模式也是一种结构型设计模式。
桥接模式类图:

具体示例demo:
抽象消息
package bridgePattern;public abstract class AbstractMessage {private MessageSending messageSending;private String msgContent;private String toUserName;public AbstractMessage(String msgContent, String toUserName,MessageSending messageSending){this.messageSending = messageSending;}public abstract void messageAction(String msgContent, String toUserName,MessageSending messageSending);}package bridgePattern;public class NormalMessage extends AbstractMessage{public NormalMessage(String msgContent, String toUserName,MessageSending messageSending) {super(msgContent, toUserName, messageSending);// TODO Auto-generated constructor stub}public void messageAction(String msgContent, String toUserName,MessageSending messageSending) {System.out.println("This is a normal message,send it as normal level");messageSending.sendMessage(msgContent, toUserName);}}package bridgePattern;public class UrgentMessage extends AbstractMessage{public UrgentMessage(String msgContent, String toUserName,MessageSending messageSending) {super(msgContent, toUserName, messageSending);// TODO Auto-generated constructor stub}public void messageAction(String msgContent, String toUserName,MessageSending messageSending) {System.out.println("This is a urgent message,send it as urgent level");messageSending.sendMessage(msgContent, toUserName);}}package bridgePattern;public interface MessageSending {void sendMessage(String msgContent,String toUserName);}package bridgePattern;public class EmailMessageSending implements MessageSending{public void sendMessage(String msgContent, String toUserName) {System.out.println("Send "+msgContent+" "+toUserName+" "+"by EmailMessageSending");}}package bridgePattern;public class WangwangMessageSending implements MessageSending{public void sendMessage(String msgContent, String toUserName) {System.out.println("Send "+msgContent+" "+toUserName+" "+"by WangwangMessageSending");}}package bridgePattern;public class BridgeTest {public static void main(String[] args){MessageSending messageSending = new WangwangMessageSending();MessageSending messageSending2 = new EmailMessageSending();AbstractMessage message = new NormalMessage("hello,world","lxy",messageSending);message.messageAction("hello,world", "lxy", messageSending);AbstractMessage message2 = new NormalMessage("hello,world","lxy",messageSending2);message2.messageAction("hello,world", "lxy", messageSending2);AbstractMessage message3 = new UrgentMessage("hello,world","lxy",messageSending);message3.messageAction("hello,world", "lxy", messageSending);AbstractMessage message4 = new UrgentMessage("hello,world","lxy",messageSending2);message4.messageAction("hello,world", "lxy", messageSending2);}}