Java实现在访问者模式中使用反射】的更多相关文章

集合类型在面向对象编程中很常用,这也带来一些代码相关的问题.比如,“怎么操作集合中不同类型的对象?” 一种做法就是遍历集合中的每个元素,然后根据它的类型而做具体的操作.这会很复杂,尤其当你不知道集合中元素的类型时.如果y要打印集合中的元素,可以写一个这样的方法: public void messyPrintCollection(Collection collection) { Iterator iterator = collection.iterator() while (iterator.ha…
博客原文地址:折腾Java设计模式之访问者模式 访问者模式 Represent an operation to be performed on the elements of an object structure. Visitor lets a new operation be defined without changing the classes of the elements on which it operates. 访问者模式的目的是封装一些施加于某种数据结构元素之上的操作.一旦这些…
在阎宏博士的<JAVA与模式>一书中开头是这样描述访问者(Visitor)模式的: 访问者模式是对象的行为模式.访问者模式的目的是封装一些施加于某种数据结构元素之上的操作.一旦这些操作需要修改的话,接受这个操作的数据结构则可以保持不变. 分派的概念 变量被声明时的类型叫做变量的静态类型(Static Type),有些人又把静态类型叫做明显类型(Apparent Type):而变量所引用的对象的真实类型又叫做变量的实际类型(Actual Type).比如: List list = null; l…
基本需求: 电脑需要键盘鼠标等固定的组件组成 现在分为个人,组织等去买电脑,而同一种组件对不同的人(访问者)做出不同的折扣,从而电脑的价格也不一样 传统的解决方法:在组件内部进行判断访问人的类型,从而进行不同打出不同的折扣 缺陷:如果访问者的类型增加了,则需要改变组件内部的判断代码,违反了开闭原则,访问者的类型太多,判断的代码也会很庞大 基本介绍: 在访问者模式(Visitor)中,我们使用了一个访问者类,它改变了元素类的执行算法.通过这种方式,元素的执行算法可以随着访问者改变而改变.这种类型的…
目录 定义 意图 解决问题 何时使用 优缺点 结构 电脑专卖系统 定义 访问者模式是对象的行为型模式,它的目的是封装一些施加于某些数据结构元素之上的操作,一旦这些操作需要修改的话,接收这个操作的数据结构则可以保持不变 意图 将数据结构与数据操作分离 解决问题 稳定的数据结构和易变的操作耦合问题 何时使用 要对一个对象结构中的对象进行很多不同的并且不相关的操作,而需要避免让这些操作"污染"这些对象的类,使用访问者模式将这些封装到类中 优缺点 优点: 使得增加新的操作很容易 将有关的行为集…
在我们课堂上的"购物车"的例子中,增加一个新的访问者:打包员,负责对购物车中货物装包. 类图: Java代码: public interface Product { void accept(Visitor visitor); } public class Apple implements Product{ @Override public void accept(Visitor visitor) { // TODO Auto-generated method stub visitor.…
1.模式的定义与特点 访问者(Visitor)模式的定义:将作用于某种数据结构中的各元素的操作分离出来封装成独立的类,使其在不改变数据结构的前提下可以添加作用于这些元素的新的操作,为数据结构中的每个元素提供多种访问方式.它将对数据的操作与数据结构进行分离,是行为类模式中最复杂的一种模式. 访问者(Visitor)模式是一种对象行为型模式, 其主要优点如下 扩展性好.能够在不修改对象结构中的元素的情况下,为对象结构中的元素添加新的功能.复用性好.可以通过访问者来定义整个对象结构通用的功能,从而提高…
问题提出 生活中有很多事物集合,设为A1,A2......Am ,而每个事物都有功能F1,F2....Fn. 例如邮局的发送业务.简单模拟有两类事物:信件和包裹,均有平邮和挂号邮寄功能.程序设计中如何来描述这些功能呢?或许一般会与下面代码相似. public class A1 { void F1(){} void F2(){} } public class A2 { void F1(){} void F2(){} } 很明显,若有m个事物,n个功能,按照这个方法,一共要写m个类,功能方法累积起来…
写在前面的话:读书破万卷,编码如有神--------------------------------------------------------------------主要内容包括: 初识访问者模式,包括: 定义.结构.参考实现 体会访问者模式,包括: 场景问题.不用模式的解决方案.使用模式的解决方案 理解访问者模式,包括: 认识访问者模式.操作组合对象结构.谁负责遍历所有元素对象.访问者模式的优缺点 思考访问者模式,包括: 访问者模式的本质.何时选用 参考内容: 1.<研磨设计模式> 一…
先看一个和visitor无关的案例.假设你现在有一个书架,这个书架有两种操作,1添加书籍2阅读每一本书籍的简介. //书架public class Bookcase { List<Book> structure = new ArrayList(); public void add(Book book) { structure.add(book); } //查看书籍的简介 public void readIntroduction() { for (Book book : structure) {…