把抽象部分与实现部分分离,使得它们能够独立变化——这就是桥接模式java
例如:发送信息,发送方式有用手机发送,用邮件发送,那么它的抽象就是发送方式;信息类型有广告类信息,也有私人信息,那么抽象部分就是信息类型。ide
下面给出这个例子的模拟代码:测试
/** * 短信发送方式抽象类 * * @author Administrator * */ interface MessageSender { public void sendMessage(); } /** * 手机发信息 * @author Administrator * */ class MobileSender implements MessageSender{ @Override public void sendMessage() { System.out.println("使用手机方式发送信息!"); } } /** * 邮件发信息 * @author Administrator * */ class EmailSender implements MessageSender{ @Override public void sendMessage() { System.out.println("使用邮件方式发送信息!"); } } /** * 短信类型抽象类 * * @author Administrator * */ abstract class MessageType { protected MessageSender messageSender; public MessageType(MessageSender messageSender) { this.messageSender = messageSender; } public abstract void sendMessage(); } /** * 广告类信息 * @author Administrator * */ class ADMessage extends MessageType{ public ADMessage(MessageSender messageSender) { super(messageSender); } @Override public void sendMessage() { this.messageSender.sendMessage(); System.out.println("消息类型为广告!\n"); } } /** * 私人信息 * @author Administrator * */ class PrivateMessage extends MessageType{ public PrivateMessage(MessageSender messageSender) { super(messageSender); } @Override public void sendMessage() { this.messageSender.sendMessage(); System.out.println("消息类型为私人信息!\n"); } } /** * 测试类 * * @author Administrator * */ public class Test { public static void main(String[] args) { MessageSender mobileSender = new MobileSender(); //用手机发一条广告信息 MessageType adMessage = new ADMessage(mobileSender); adMessage.sendMessage(); //用手机发一条我的信息 MessageType privateMessage = new PrivateMessage(mobileSender); privateMessage.sendMessage(); //用邮件发一条广告信息 MessageSender emailSender = new EmailSender(); adMessage = new ADMessage(emailSender); adMessage.sendMessage(); //用邮件发一条我的信息 privateMessage=new PrivateMessage(emailSender); privateMessage.sendMessage(); } }屏幕打印结果以下:
使用手机方式发送信息!this
消息类型为广告!spa
使用手机方式发送信息!code
消息类型为私人信息!class
使用邮件方式发送信息!email
消息类型为广告!mobile
使用邮件方式发送信息!im
消息类型为私人信息!