Thursday, February 4, 2021

Android Visitor Pattern

 

1.定义

封装某些作用于某种数据结构中各元素的操作,它可以在不改变数据结构的前提下定义作用于这些元素的新的操作。

2.介绍

  • 访问者模式属于行为型模式。
  • 访问者模式是一种将数据结构数据操作分离的设计模式。
  • 访问者模式比较复杂,而且实际使用的地方并不多。
  • 访问者模式适用于数据结构稳定的元素操作上,一旦数据结构易变,则不适用。

5. 应用场景

  • 对象结构比较稳定,很少改变,但是经常需要在此对象结构上定义新的操作行为时。
  • 需要对一个对象结构中的对象进行很多不同的并且不相关的操作,它可以在不改变这个数据结构的前提下定义作用于这些元素的新的操作。

6. 优点

  • 各种角色各司其职,符合单一职责原则。
  • 原有的类上新增操作只需实现一个具体访问者就可以,不 必修改整个类层次,符合开闭原则。
  • 良好的扩展性,新增访问操作变得简单。
  • 数据操作和数据结构的解耦。

7. 缺点

  • 具体元素对访问者公布了实现细节,破坏了类的封装性,违反了迪米特原则。
  • 违反了依赖倒置原则,为了达到区别对待依赖了具体而不是抽象。
  • 具体元素修改的成本太大。
  • 新增具体元素困难,需要在抽象访问者角色中增加一个新的抽象操作,违反了开闭原则。


Android中运用访问者模式,其实主要是在编译期注解中,编译期注解核心原理依赖APT(Annotation Processing Tools),著名的开源库比如ButterKnife、Dagger、Retrofit都是基于APT。

Reference:

https://www.jianshu.com/p/279563870478

https://www.jianshu.com/p/62289b9bcfcb

No comments:

Post a Comment

n8n index

 【n8n免費本地端部署】Windows版|程式安裝x指令大補帖  【一鍵安裝 n8n】圖文教學,獲得無限額度自動化工具&限時免費升級企業版功能