java设计模式之——桥接模式

把抽象部分与实现部分分离,使得它们能够独立变化——这就是桥接模式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

消息类型为私人信息!