用不同的形式发送普通、加急、特急消息
功能接口:
public interface MessageImplementor {
public void send(String message,String toUser);
}
具体功能1:
public class MessageSMS implements MessageImplementor {
@Override
public void send(String message, String toUser) {
System.out.println("使用站内短消息的方式,发送"+message+"给"+toUser);
}
}
具体功能2:
public class MessageEmail implements MessageImplementor {
@Override
public void send(String message, String toUser) {
System.out.println("使用Email的方式,发送"+message+"给"+toUser);
}
}
对功能有所需求的抽象类:
public abstract class AbstractMessage {
protected MessageImplementor impl;
protected AbstractMessage(MessageImplementor impl) {
super();
this.impl = impl;
}
public void sendMessage(String message,String toUser) {
this.impl.send(message, toUser);
}
}
对功能有所需求的具体类1:
public class CommonMessage extends AbstractMessage {
public CommonMessage(MessageImplementor impl){
super(impl);
}
public void sendMessage(String message,String toUser) {
super.sendMessage(message, toUser);
}
}
对功能有所需求的具体类2:
public class UrgencyMessage extends AbstractMessage {
public UrgencyMessage(MessageImplementor impl) {
super(impl);
}
public void sendMessage(String message,String toUser) {
message+="加急";
super.sendMessage(message, toUser);
}
}
对功能有所需求的具体类3:
public class SpecialUrgencyMessage extends AbstractMessage {
public SpecialUrgencyMessage(MessageImplementor impl) {
super(impl);
}
public void sendMessage(String message,String toUser) {
message+="特急";
super.sendMessage(message, toUser);
}
}
测试类:
public class Main {
public static void main(String[] args) {
MessageImplementor impl=new MessageSMS();
AbstractMessage m=new CommonMessage(impl);
m.sendMessage("请喝咖啡", "小李");
m=new UrgencyMessage(impl);
m.sendMessage("请喝咖啡", "小李");
m=new SpecialUrgencyMessage(impl);
m.sendMessage("请喝咖啡", "小李");
impl=new MessageEmail();
m=new CommonMessage(impl);
m.sendMessage("请喝茶", "木子");
m=new UrgencyMessage(impl);
m.sendMessage("请喝茶", "木子");
m=new SpecialUrgencyMessage(impl);
m.sendMessage("请喝茶", "木子");
}
}