您当前的位置: 首页 > 

命运之手

暂无认证

  • 1浏览

    0关注

    747博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

【设计模式】【22】访问者模式

命运之手 发布时间:2022-05-02 15:14:31 ,浏览量:1

应用场景

访问者模式,英文名Visitor Pattern

该模式通过一个访问类,来集中实现对不同类型数据的访问或操作

该模式的优点是,旧的类只需实现一个被访问者接口,不用修改修改旧代码,就能被Visitor访问

适合需要对大量、类型不同的数据,进行集中访问的场景

代码实现


	public interface IBook {
	
	    void onVisit(Visitor visitor);
	}
	
	public class BookA implements IBook {
	
	    public String isbn;
	    public String author;
	    public String name;
	    public String press;
	
	    @Override
	    public void onVisit(Visitor visitor) {
	        visitor.visit(this);
	    }
	}
	
	public class BookB implements IBook {
	
	    public String isbn;
	    public String author;
	    public String name;
	    public String press;
	
	    @Override
	    public void onVisit(Visitor visitor) {
	        visitor.visit(this);
	    }
	}


	public class Visitor {
	
	    public void visit(BookA a) {
	        System.out.println(a.isbn);
	    }
	
	    public void visit(BookB b) {
	        System.out.println(b.isbn + "/" + b.name);
	    }
	}


	public class APP {
	
	    public static void main(String... args) {
	        Visitor visitor = new Visitor();
	        List subjects = new ArrayList();
	        subjects.add(new BookA());
	        subjects.add(new BookB());
	        for (IBook subject : subjects)
	            subject.onVisit(visitor);
	    }
	}

模式扩展

上面的代码,是直接对每个具体的类,实现不同的访问方式

除此之外,还可以是对某类接口,某种基类,实现统一访问

也可以对单个具体的类,实现多种访问方式

关注
打赏
1654938663
查看更多评论
立即登录/注册

微信扫码登录

0.0370s