package visitor; public interface Visable { public void accept(PersonVisitor visitor); }
package visitor; public class Hand implements Visable{ private String name; public Hand(String name){ this.name=name; } /** * 可以接受访问的方法 * @param visitor */ public void accept(PersonVisitor visitor){ visitor.visitor(this); } String getHand(){ return this.name; } }
package visitor; public class Leg implements Visable{ /** * 可以接受访问的方法 * @param visitor */ public void accept(PersonVisitor visitor){ visitor.visitor(this); } }
package visitor; /** * 观察者接口 * @author Administrator * */ public interface PersonVisitor { /** * 腿 * @param leg */ public void visitor(Leg leg); /** * 手 * @param hand */ public void visitor(Hand hand); }
package visitor; import java.util.Iterator; import java.util.List; public class Visitor implements PersonVisitor { @Override public void visitor(Leg leg) { System.out.println("leg is visited"); } @Override public void visitor(Hand hand) { System.out.println(hand.getHand()+"is visited"); } public void VisitorCollections(List cons){ Iterator it = cons.iterator(); while (it.hasNext()) { //方法1 // Object o = it.next(); // if (o instanceof Visable) // ((Visable)o).accept(this); // } //方法2 Visable o = (Visable)it.next(); o.accept(this); } } }
package visitor; import java.util.ArrayList; import java.util.List; public class VisitorMain { public static void main(String[] args) { Hand hand = new Hand("i am a hand"); Leg leg = new Leg(); Visitor visitor = new Visitor(); leg.accept(visitor); hand.accept(visitor); List cons = new ArrayList(); cons.add(leg); cons.add(hand); visitor.VisitorCollections(cons); } }
相关推荐
设计模式(Design pattern)代表了最佳的实践,通常被有经验的面向对象的软件开发人员所采用。设计模式是软件开发人员在软件开发过程中面临的一般问题的解决方案。这些解决方案是众多软件开发人员经过相当长的一段...
下面我们将深入探讨访问者模式的原理、应用场景以及如何在Java中实现。 **访问者模式的核心思想** 访问者模式的核心在于"访问"二字,它定义了一个访问的接口,并让所有的结构元素都接受这个访问者,使得访问者可以...
在Java中实现访问者模式,通常包括以下几个关键角色: 1. **元素接口/抽象类**(Element):定义一个接受访问者的接口,通常包含一个accept方法,该方法接收一个访问者对象作为参数。 2. **具体元素**(Concrete ...
Java 访问者模式详解 访问者模式(Visitor Pattern)是 Java 中的一种行为型设计模式,它允许开发者在不修改对象结构的前提下定义新的操作。这种模式将对象结构和操作分离开来,使得操作可以独立地应用于对象结构中...
访问者模式是一种软件设计模式,它在对象结构中定义了一个访问者的接口,使得该访问者可以访问该结构中的每一个元素,同时不影响对象结构本身。这种模式的主要目的是将数据操作与数据结构分离,使得数据结构的变化...
在Java中,理解访问者模式需要结合分派的概念。分派是指根据对象的类型选择相应的方法。分派分为静态分派和动态分派。 静态分派发生在编译时期,主要体现在方法重载上。例如,当有多个同名但参数类型不同的方法时,...
【访问者模式】是一种设计模式,它允许在不修改对象结构的情况下增加新的操作。这种模式在Java等面向对象编程语言中被广泛应用,特别是在处理复杂...在Java开发中,合理运用访问者模式能够提高代码的灵活性和可扩展性。
在Java中,访问者模式通常包括以下几个核心角色: 1. 抽象访问者(Abstract Visitor):这是一个接口或抽象类,定义了一系列可以访问的元素类型。在示例代码中,`IVisitor` 接口声明了对`ConcreteElement1`和`...
在Java开发中,访问者模式可以有效地提高代码的可扩展性和灵活性。当需要添加新的操作时,无需修改元素类,只需增加一个新的访问者即可。然而,需要注意的是,过度使用访问者模式可能会导致系统过于依赖访问者,增加...
### Java设计模式之访问者模式详解 #### 模式动机 访问者模式主要应用于处理一组对象,这组对象通常被存储在一个聚合结构(如列表、树等)中,并且这组对象具有不同的类型。访问者模式的核心思想在于,可以通过向...
在给定的代码中,`Client.java`应该是访问者模式的应用入口,它会实例化各种元素和访问者,并通过`ObjectStructure`来遍历和访问元素。`Vistor.java`和`Element.java`是抽象接口,`ConcretVistor.java`和`...
建造者模式组合模式访问者模式 abstract class Bulider{ public abstract void BuildPartA() ; public abstract void BuildPartB() ; public abstract Product GetResult() ; }
在Java中,实现访问者模式通常包括以下组件: 1. **抽象访问者(Visitor)**:定义一个访问接口,声明访问元素类的方法。这些方法通常是根据元素类的功能来命名和实现的。 2. **具体访问者(Concrete Visitor)**...
JAVA-设计模式-行为型模式-访问者模式
在Java编程中,访问者模式可以广泛应用于处理具有复杂结构的对象集合,例如解析XML文档、构建DOM树,或者处理GUI组件等场景。然而,它也有一定的缺点,如增加了类的数量,可能违反了“开闭原则”,即对扩展开放,对...
在Java编程中,访问者模式是一种行为设计模式,它允许我们定义新的操作来作用于一组对象,而无需修改这些对象的结构。这种模式在处理具有多种类型对象的集合时特别有用,尤其是当需要针对每种类型执行特定操作时。...
在Java中,访问者模式通常包括以下几个角色: 1. 抽象访问者(Visitor)角色:这是访问者的接口,定义了对各个元素的访问行为。例如,在示例中,`Visitor`接口声明了`visit(NodeA)`和`visit(NodeB)`两个方法,表示...
为了解决这一问题,访问者模式可以采用双分派实现,即在元素类中也包含一个访问者类型参数,这样在访问者接口中只需要声明一个通用的 visit 方法,而元素类则根据自身类型决定调用哪个具体方法。 双分派的实现原理...
Java 中的非循环访问者模式将操作从对象层次结构中解耦,为各种应用提供了灵活的设计。 实际示例: 一个类似的现实世界中的非循环访问者模式的例子是博物馆导游系统,展示了这种设计模式的实际应用。想象一个博物馆...
在Java中,一个简单的访问者模式实现可能如下: ```java // 元素接口 interface Element { void accept(Visitor visitor); } // 具体元素 class ConcreteElementA implements Element { @Override public void ...