`

设计模式----访问者模式(visitor pattern)

 
阅读更多
IVisitor.java代码如下:
package com.designPattern.visitor;

public interface IVisitor {

	public void visit(CommonEmployee commonEmployee);
	
	public void visit(Manager manager);
}



Visitor.java代码如下:
 package com.designPattern.visitor;

public class Visitor implements IVisitor{

	@Override
	public void visit(CommonEmployee commonEmployee) {
		System.out.println(this.getCommonEmployee(commonEmployee));
	}

	@Override
	public void visit(Manager manager) {
		System.out.println(this.getManagerInfo(manager));
	}
	
	private String getBasicInfo(Employee employee){
		String info = "姓名:"+employee.getName()+"\t"+"性别:"+(employee.getSex()==Employee.FEMALE?"女":"男")+"\t"+"薪水:"+employee.getSalary()+"\t";
		
		return info;
	}
	
	private String getManagerInfo(Manager manager){
		String basicInfo = this.getBasicInfo(manager);
		String otherInfo = "业绩:"+manager.getPerformance()+"\t";
		return basicInfo+otherInfo;
	}
	
	private String getCommonEmployee(CommonEmployee commonEmployee){
		String basicInfo = this.getBasicInfo(commonEmployee);
		String otherInfo = "工作:"+commonEmployee.getJob()+"\t";
		return basicInfo+otherInfo;
	}

}



Employee.java代码如下:
package com.designPattern.visitor;

public abstract class Employee {

	public final static int MALE = 0;
	
	public final static int FEMALE = 1;
	
	private String name;
	
	private int salary;
	
	private int sex ;

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}

	public int getSalary() {
		return salary;
	}

	public void setSalary(int salary) {
		this.salary = salary;
	}

	public int getSex() {
		return sex;
	}

	public void setSex(int sex) {
		this.sex = sex;
	}
	
	public abstract void accept(IVisitor visitor);
	
}



Manager.java代码如下:
 package com.designPattern.visitor;

public class Manager extends Employee{

	private String performance ;
	
	public String getPerformance() {
		return performance;
	}

	public void setPerformance(String performance) {
		this.performance = performance;
	}

	public void accept(IVisitor visitor) {
 		visitor.visit(this);
	}

}



CommonEmployee.java代码如下:
 package com.designPattern.visitor;

public class CommonEmployee extends Employee{

	private String job;
	
	public String getJob() {
		return job;
	}

	public void setJob(String job) {
		this.job = job;
	}

	public void accept(IVisitor visitor) {
		visitor.visit(this);
	}

}



Client.java代码如下:
 package com.designPattern.visitor;

import java.util.ArrayList;
import java.util.List;

public class Client {

	public static void main(String[] args) {
		for(Employee employee:mockEmployee()){
			employee.accept(new Visitor());
		}
	}
	
	public static List<Employee> mockEmployee(){
		List<Employee> employeeList = new ArrayList<Employee>();
		
		CommonEmployee zhangsan = new CommonEmployee();
		zhangsan.setJob("java开发工程师");
		zhangsan.setName("张三");
		zhangsan.setSalary(1900);
		zhangsan.setSex(Employee.MALE);
		employeeList.add(zhangsan);
		
		
		CommonEmployee liSi = new CommonEmployee();
		liSi.setJob("美工");
		liSi.setName("李四");
		liSi.setSalary(4000);
		liSi.setSex(Employee.FEMALE);
		employeeList.add(liSi);
		
		Manager wangwu = new Manager();
		wangwu.setName("王五");
		wangwu.setPerformance("业绩很好");
		wangwu.setSalary(20000);
		wangwu.setSex(Employee.MALE);
		employeeList.add(wangwu);
		
		return employeeList;
	}
}



运行结果如下:
姓名:张三	性别:男	薪水:1900	工作:java开发工程师	
姓名:李四	性别:女	薪水:4000	工作:美工	
姓名:王五	性别:男	薪水:20000	业绩:业绩很好	
分享到:
评论

相关推荐

    访问者模式VisitorPattern

    **访问者模式(VisitorPattern)** 访问者模式是一种行为设计模式,它使你能在不修改对象结构的前提下向对象添加新的操作。这种模式常用于处理具有复杂逻辑的对象结构,特别是当你需要对这些对象进行多态操作时。访问...

    设计模式-访问者(Visitor)模式详解和应用.pdf

    访问者模式(Visitor Pattern)是一种行为型设计模式,它允许我们向一组已存在的类添加新的行为,而无需修改这些类。这种模式的核心思想是在不改变元素类的前提下,通过引入新的访问者来扩展系统的功能。 #### 二、...

    设计模式之访问者模式(Visitor Pattern)

    **访问者模式(Visitor Pattern)**是一种行为设计模式,它提供了一种在不修改对象结构的情况下增加新操作的方法。这种模式的主要思想是将数据结构与算法分离,使得算法可以在不改变对象结构的情况下独立变化。 在...

    design-pattern-java.pdf

    算法的封装与切换——策略模式(四) 模板方法模式-Template Method Pattern 模板方法模式深度解析(一) 模板方法模式深度解析(二) 模板方法模式深度解析(三) 访问者模式-Visitor Pattern 操作复杂对象结构——...

    设计模式 - 访问者模式

    访问者模式(Visitor Pattern)是一种行为设计模式,它使你能在不修改对象结构的前提下向其添加新的操作。这种模式常用于处理具有相同接口或抽象类的对象结构,使得可以在不改变原有结构的基础上增加功能,实现对...

    软件设计与体系结构-设计模式-访问者模式-ppt制作

    访问者模式(Visitor Pattern)是软件工程领域中一种重要的设计模式,主要用于处理数据结构中元素的操作问题。该模式的核心思想在于将数据操作与数据结构本身相分离,通过这种方式,可以在不改变数据结构的前提下...

    java常用设计模式-访问者模式

    访问者模式(Visitor Pattern)是 Java 中的一种行为型设计模式,它允许开发者在不修改对象结构的前提下定义新的操作。这种模式将对象结构和操作分离开来,使得操作可以独立地应用于对象结构中的元素。 在访问者...

    设计模式 - Design Pattern

    - 访问者(Visitor):表示一个作用于某对象结构中的各元素的操作,它可以在不改变各元素的类的前提下定义作用于这些元素的新操作。 学习和掌握设计模式有助于提升软件设计的灵活性、可维护性和可扩展性。通过阅读...

    JAVA设计模式-chm版

    包括责任链模式(Chain of Responsibility)、命令模式(Command)、解释器模式(Interpreter)、迭代器模式(Iterator)、中介者模式(Mediator)...Strategy)、模板方法模式(Template Method)和访问者模式(Visitor)...

    设计模式整理代码-pattern.zip

    - 访问者模式(Visitor):表示一个作用于某对象结构中的各元素的操作,它使你可以在不改变各元素的类的前提下定义作用于这些元素的新操作。 每种设计模式都有其特定的应用场景和优缺点,理解并灵活运用这些模式,...

    C++11全套设计模式-23种指针的用法(a full DesignPattern -DesignPattern.zip

    本资料包“DesignPattern - DesignPattern.zip”提供了对C++11中23种设计模式的全面讲解,特别是结合指针使用的部分,以下是对这些知识点的详细阐述: 1. **单例模式(Singleton)**:确保一个类只有一个实例,并...

    GOF-设计模式-Design Patterns-英文原版-高清-有目录-有页码

    - **访问者**(Visitor):表示一个作用于某对象结构中的各元素的操作。 #### 八、设计模式的应用总结 **设计模式的应用总结:** - **期望从设计模式获得的价值**:设计模式可以帮助开发者更高效地解决问题,提高...

    23种设计模式 - 架构设计 - PPT

    - **访问者模式(Visitor)**:表示一个作用于某对象结构中的各元素的操作。 #### 五、创建型模式详解 **工厂模式(The Factory Pattern)**: - **定义**:定义一个用于创建对象的接口,让子类决定实例化哪一个类。...

    visitor pattern

    2. **具体访问者(Concrete Visitor)**:实现抽象访问者接口中的所有方法,提供了对元素的具体操作实现。 3. **抽象元素(Element)**:定义一个接受访问者的方法,该方法将访问者对象传递给元素。 4. **具体元素...

    JAVA design pattern-java设计模式

    如命令(Command)、解释器(Interpreter)、迭代器(Iterator)、中介者(Mediator)、备忘录(Memento)、观察者(Observer)、状态(State)、策略(Strategy)、模板方法(Template Method)、访问者(Visitor)...

    23种设计模式-C++实现.zip

    设计模式是软件工程中经过长期实践验证的有效解决方案模板,它们为常见的编程问题提供了...在压缩包中的"DesignPattern-master"文件夹中,你将找到每个设计模式的详细实现示例,这将是你学习和理解设计模式的宝贵资源。

    design-pattern-Java设计模式

    行为型模式如策略(Strategy)、模板方法(Template Method)、观察者(Observer)、命令(Command)、迭代器(Iterator)、访问者(Visitor)、备忘录(Memento)、状态(State)、职责链(Chain of Responsibility...

    设计模式的访问者模式的例子

    访问者模式是一种软件设计模式,它在对象结构中定义了一个访问者的接口,使得该访问者可以访问该结构中的每一个元素,同时不影响对象结构本身。这种模式的主要目的是将数据操作与数据结构分离,使得数据结构的变化...

    这是一套 Java 设计模式的集合示例-design-pattern.zip

    - 访问者模式(Visitor):表示一个作用于某对象结构中的各元素的操作,它可以在不改变各元素的类的前提下定义作用于这些元素的新操作。 在"design-pattern-master"中,你可以期待找到各种设计模式的具体实现,每...

Global site tag (gtag.js) - Google Analytics