桥接模式
2013-12-25 13:49
393 查看
发送消息的方式:
/**
* @author android3
* 实现发送消息的统一接口
*/
public interface MessageImplementor {
/**
* 发送消息
* @param message 要发送的消息内容
* @param toUser 消息发送的目的人员
*/
public void send(String message ,String toUser);
}
public class MessageMobile implements MessageImplementor {
@Override
public void send(String message, String toUser) {
System.out.println("使用手机的方式,发送消息"+message+"给"+toUser);
}
}
消息的类型
/**
* @author android3
* 抽象的消息对象
*/
public abstract class AbstractMessage {
/**
* 持有一个实现部分的对象
*/
protected MessageImplementor impl;
public AbstractMessage(MessageImplementor impl){
this.impl = impl;
}
/**发送消息转调实现部分的方法
* @param message 要发送的消息
* @param toUser 消息的目的地
*/
public void sendMessage(String message,String toUser){
this.impl.send(message, toUser);
}
}
public class UrgencyMessage extends AbstractMessage {
public UrgencyMessage(MessageImplementor impl) {
super(impl);
// TODO Auto-generated constructor stub
}
@Override
public void sendMessage(String message, String toUser) {
message = "《加急》:"+ message;
super.sendMessage(message, toUser);
}
}
public class SpecialUrgencyMessage extends AbstractMessage {
public SpecialUrgencyMessage(MessageImplementor impl) {
super(impl);
}
@Override
public void sendMessage(String message, String toUser) {
message = "特急"+message;
super.sendMessage(message, toUser);
}
}
/**
* @author android3
* 实现发送消息的统一接口
*/
public interface MessageImplementor {
/**
* 发送消息
* @param message 要发送的消息内容
* @param toUser 消息发送的目的人员
*/
public void send(String message ,String toUser);
}
public class MessageSMS implements MessageImplementor { @Override public void send(String message, String toUser) { System.out.println("使用站内短消息的方式,发送消息"+message+"给"+toUser); } }
public class MessageEmail implements MessageImplementor { @Override public void send(String message, String toUser) { System.out.println("使用Email的方式,发送消息"+message+"给"+toUser); } }
public class MessageMobile implements MessageImplementor {
@Override
public void send(String message, String toUser) {
System.out.println("使用手机的方式,发送消息"+message+"给"+toUser);
}
}
消息的类型
/**
* @author android3
* 抽象的消息对象
*/
public abstract class AbstractMessage {
/**
* 持有一个实现部分的对象
*/
protected MessageImplementor impl;
public AbstractMessage(MessageImplementor impl){
this.impl = impl;
}
/**发送消息转调实现部分的方法
* @param message 要发送的消息
* @param toUser 消息的目的地
*/
public void sendMessage(String message,String toUser){
this.impl.send(message, toUser);
}
}
public class CommonMessage extends AbstractMessage { public CommonMessage(MessageImplementor impl) { super(impl); } @Override public void sendMessage(String message, String toUser) { super.sendMessage(message, toUser); } }
public class UrgencyMessage extends AbstractMessage {
public UrgencyMessage(MessageImplementor impl) {
super(impl);
// TODO Auto-generated constructor stub
}
@Override
public void sendMessage(String message, String toUser) {
message = "《加急》:"+ message;
super.sendMessage(message, toUser);
}
}
public class SpecialUrgencyMessage extends AbstractMessage {
public SpecialUrgencyMessage(MessageImplementor impl) {
super(impl);
}
@Override
public void sendMessage(String message, String toUser) {
message = "特急"+message;
super.sendMessage(message, toUser);
}
}
public class Client { public static void main(String[] args) { MessageImplementor impl =new MessageSMS(); AbstractMessage m = new CommonMessage(impl); m.sendMessage("请上座", "xihe"); m = new UrgencyMessage(impl); m.sendMessage("请上座", "xihe"); m = new SpecialUrgencyMessage(impl); m.sendMessage("请上座", "xihe"); //手机方式 impl = new MessageMobile(); m = new CommonMessage(impl); m.sendMessage("请上座", "xihe"); m = new UrgencyMessage(impl); m.sendMessage("请上座", "xihe"); m = new SpecialUrgencyMessage(impl); m.sendMessage("请上座", "xihe"); //Email方式 impl = new MessageEmail(); m = new CommonMessage(impl); m.sendMessage("请上座", "xihe"); m = new UrgencyMessage(impl); m.sendMessage("请上座", "xihe"); m = new SpecialUrgencyMessage(impl); m.sendMessage("请上座", "xihe"); } }
相关文章推荐
- 获取远程控制相关信息和设置
- Launcher Icon标题过长时,用“..”结尾
- java变量命名规范
- 在虚拟机中搭建服务器
- 西部数码域名注册量动态:12月上旬净增3765个
- 和菜鸟一起学android4.0.3源码之wifi的简单分析
- MyEclipse中add jars和add external jars的区别带来的svn checkout的问题
- java 时间 毫秒数
- 【HDFS】namenode如何根据输入的文件(路径)名找到对应的inode的?
- /dev/mtdN和/dev/mtdblockN的区别
- JavaScript可否多线程? 深入理解JavaScript定时机制
- mysql 数据库操作
- APK 的文件结构
- 2013十佳IDC评选-专访浙江云道总经理俞夏明
- Hessian(C#)介绍及使用说明
- 谷歌和三星进入Linux开发贡献公司排名榜前10
- 谷歌和三星进入Linux开发贡献公司排名榜前10
- jquery api closeset()
- linux(centos6.5 i386)安装mysql5.6源码包
- Spider Studio 新版本 (x-mas) - 可以引入第三方程序集, 可以将脚本生成为DLL