ActiveMQ中访问者模式:ActiveMQ中有很多可访问的类,这些类的操作分离开来

在ActiveMQ中使用访问者模式,允许在不改变现有类结构的情况下,为这些类添加新的操作。

具体来说:

ActiveMQ有许多可以访问的类

如:

  • Destination:表示队列和主题
  • Message:表示消息对象
  • Connection:表示与Broker的连接
  • Producer:表示生产者
  • 等等

这些类的功能已经定义好了。

访问者模式

ActiveMQ通过访问者模式,为这些类提供额外的操作:

  • 定义Visitor接口:
public interface Visitor {
   void visit(Destination destinatrion); 
   void visit(Message message); 
   void visit(Connection connection);
   // 其他元素类
}
  • 各类实现accept方法:
public class Destination {

  public void accept(Visitor visitor) {
     visitor.visit(this);  
  }
}
  • 定义具体的Visitor实现:
public class LoggingVisitor implements Visitor {

  public void visit(Destination destination) {
     System.out.println("Visited destination " + destination);
  }

  // 访问其他元素  
}
  • 调用accept方法:
Destination destination = ..
destination.accept(new LoggingVisitor());

这样就可以为Destination类新增了打印日志的操作,而不修改原Destination类。

作用

ActiveMQ通过访问者模式,可以:

  • 新增各个类的操作
  • 而不修改类结构
  • 只需实现具体的Visitor
  • 增加新的Visitor类

符合访问者模式原理:

  • 定义元素类
  • 定义访问者
  • 一方调用另一方

总之 Accessor 模式允许在不修改现有类的情况下,给这些类添加额外的功能。