软件设计模式之标题模式
桥接模式:电子商务网站常有这样的功能:发送消息通知,比如订货发货通知等,从业务上看,消息分为普通消息、加急消息和特急消息多种不同的消息类型,其业务处理是不一样的,比如加急消息是在消息上添加加急标记,而特急消息是添加了加急标记外,还会做一条催促的记录,多久不完成会继续催促。从发送消息的手段上看,又有系统内消息、手机短信消息、邮件等。请使用合适的设计模式进行设计,绘制所选择模式的结构图,并绘制该案例的类图,并编写代码实现并进行演示
/**
* @author zzw
* @create 2020/11/18-15:16
* 测试类
*/
public class zzw34Test {
public static void main(String[] args) {
//手机短信发送普通信息
zzw34GeneralMessage gm=new zzw34GeneralMessage();
gm.setSentMean(new zzw34PhoneMessage());
gm.sendmg();
//邮件发送加急信息
zzw34UrgentMessage ug=new zzw34UrgentMessage();
ug.setSentMean(new zzw34MailMessage());
ug.sendmg();
//系统内发送特急信息
zzw34UrgentNews un=new zzw34UrgentNews();
un.setSentMean(new zzw34SystemMessage());
un.sendmg();
}
}
其他类,两个接口:
总代码预览:
/**
* @author zzw
* @create 2020/11/18-15:02
* 发送方式接口
*/
public interface zzw34SendMeans {
String sendMeans();
}
/**
* @author zzw
* @create 2020/11/18-14:50
* 发送信息重要程度接口
*/
public interface zzw34SendMessage {
void sendmg();
}
实现类:
/**
* @author zzw
* @create 2020/11/18-14:52
*/
public class zzw34GeneralMessage implements zzw34SendMessage {
@Override
public void sendmg() {
System.out.println(sm.sendMeans()+"普通信息");
}
private zzw34SendMeans sm;
void setSentMean(zzw34SendMeans sm){
this.sm=sm;
}
}
/**
* @author zzw
* @create 2020/11/18-15:07
*/
public class zzw34MailMessage implements zzw34SendMeans {
@Override
public String sendMeans() {
return "邮件";
}
}
/**
* @author zzw
* @create 2020/11/18-15:06
*/
public class zzw34PhoneMessage implements zzw34SendMeans{
@Override
public String sendMeans() {
return "手机短信";
}
}
/**
* @author zzw
* @create 2020/11/18-15:04
*/
public class zzw34SystemMessage implements zzw34SendMeans {
@Override
public String sendMeans() {
return "系统内";
}
}
/**
* @author zzw
* @create 2020/11/18-14:54
*/
public class zzw34UrgentMessage implements zzw34SendMessage {
@Override
public void sendmg() {
System.out.println(sm.sendMeans()+"发送加急消息并添加加急标记");
}
private zzw34SendMeans sm;
void setSentMean(zzw34SendMeans sm){
this.sm=sm;
}
}
/**
* @author zzw
* @create 2020/11/18-14:55
*/
public class zzw34UrgentNews implements zzw34SendMessage {
@Override
public void sendmg() {
System.out.println(sm.sendMeans()+"普通消息并添加特急标记和催促记录");
}
private zzw34SendMeans sm;
void setSentMean(zzw34SendMeans sm){
this.sm=sm;
}
}
结果:
手机短信普通信息
邮件发送加急消息并添加加急标记
系统内普通消息并添加特急标记和催促记录