package test0806;
import java.util.*;

abstract class employee ...{
private String name;

public String getName() ...{
return name;
}

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

public employee(String name) ...{
this.name = name;
}
public abstract int salary();
}

interface Visitable ...{
public void Accept(Visitor v);
}

class stuff extends employee implements Visitable ...{

public stuff(String name) ...{
super(name);
}
@Override
public int salary() ...{
return 3000;
}

public void Accept(Visitor v) ...{
v.visitStuff(this);
}
}

class manager extends employee implements Visitable ...{

public manager(String name) ...{
super(name);
// TODO Auto-generated constructor stub
}
@Override
public int salary() ...{
// TODO Auto-generated method stub
return 5000;
}

public void Accept(Visitor v) ...{
v.visitManager(this);
}
}

interface Visitor ...{
void visitStuff(stuff s);
void visitManager(manager m);
}

class salaPrintA implements Visitor ...{

public void visitManager(manager m) ...{
System.out.println(m.salary());
}

public void visitStuff(stuff s) ...{
System.out.println(s.salary());
}
}

class salaPrintB implements Visitor ...{

public void visitManager(manager m) ...{
System.out.println(m.getName() + "'s salary is " + m.salary());
}

public void visitStuff(stuff s) ...{
System.out.println(s.getName() + "'s salary is " + s.salary());
}
}

class employees ...{
private ArrayList col = new ArrayList();
private Iterator i;

public void add(Visitable e) ...{
col.add(e);
}

public void Accept(Visitor v) ...{
i = col.iterator();
while (i.hasNext()) ...{
//System.out.println((i));
//System.out.println(i.getClass()+"DDDD");
((Visitable) i.next()).Accept(v);
}
}
}

public class VisitorTest ...{

public static void main(String[] args) ...{
employees es = new employees();
stuff s1 = new stuff("s1");
stuff s2 = new stuff("s2");
manager m1 = new manager("m1");
es.add(s1);
es.add(s2);
es.add(m1);
Visitor VA = new salaPrintA();
Visitor VB = new salaPrintB();
es.Accept(VA);
es.Accept(VB);
}
}
本文介绍了一个使用Java实现的员工薪资展示案例,通过Visitor模式来访问不同的员工类型(如职员和经理),并根据不同类型的员工打印其薪资信息。此案例展示了如何灵活地增加新的薪资打印方式。
266

被折叠的 条评论
为什么被折叠?



