观察者设计模式二:回调函数
在上篇博客中具体介绍了观察者设计模式在异步短信发送中的应用场景,但是,在具体的业务中短息发送使用那种方式则会令代码很不友好;
这里我使用的是回调函数的方式来实现这个业务需求:
在具体的业务场景中,我们不会特意去维护一个目标类,只是在目标类中会调用观察类的 update 方法时采用的是回调函数的方式进行调用:
以下是具体的场景代码实现:
1:维护一个观察者接口,在该接口中维护一个update的方法:
public interface Observe { // 实时监控目标对象的状态 public void update(int i); }
2:维护一个目标对象:这里的目标对象就是发送短信的具体类:
public class Message implements Subject{ // 具体发送短信的方法 public static void sendMess(Observe o1){ // TODO 请求发送短信接口 返回相应的状态 int i=1; // 短信发送后调用相应的回调函数 o1.update(i); } }
3:在具体的业务实现类中采用回调函数的模式对短信发送的情况进行实时入库:
这里的以预约单作为具体的业务实现类:
public class Appointment{ String appointmentId="1111"; String phoneNum="2222"; public void saveAppointment(){ // TODO 保存预约单成功 System.out.println("保存预约单成功"); // 发送短信 Message.sendMess(new Observe(){ @Override public void update(int i) { // 数据入库 System.out.println("返回状态:"+i+"预约单id:"+appointmentId+"用户电话:"+phoneNum); } }); }