NBA之访问者模式

140 阅读1分钟

Design Pattern:

模式:元素对象已接受访问者对象,这样访问者对象就可以处理元素对象上的操作。

故事场景:今天骑士队球员今天下午要看咱们勇士篮球馆,我们可以接受,和他们介绍我们多少人,球场大小 但是今天下午训练的战术不要介绍

勇士篮球馆 自带属性 并且带上接受accept()
  public class WarriorsCourt {
  
      public WarriorsCourt(String tactics, long member, String size) {
          this.tactics = tactics;
          this.member = member;
          this.size = size;
      }
  
      private String tactics;
  
      private long member;
  
      private String size;
  
  
      public void accept(WarriorsCourtVisitor visitor){
          visitor.visit(this);
      }
  
      public String getTactics() {
          return tactics;
      }
  
      public void setTactics(String tactics) {
          this.tactics = tactics;
      }
  
      public long getMember() {
          return member;
      }
  
      public void setMember(long member) {
          this.member = member;
      }
  
      public String getSize() {
          return size;
      }
  
      public void setSize(String size) {
          this.size = size;
      }
  }
Visitor类 这个是用来对外暴露类部分属性
 public class WarriorsCourtVisitor {
 
     public void visit(WarriorsCourt court){
         System.out.println("篮球能容纳人数"+court.getMember());
         System.out.println("篮球场大小"+court.getSize());
     }
 }


实验的开始
    public class VisitorDemo {
    
    
        public static void main(String[] args) {
    
            WarriorsCourt court = new WarriorsCourt("普林斯顿战术",15,"2000平方");
    
            WarriorsCourtVisitor visitor = new WarriorsCourtVisitor();
    
            court.accept(visitor);
        }
    }


结果