1.代码结构及UML


2.Manager
2.1 Manager
package Manager;
import Visitor.Visitor;
public abstract class Manager {
public abstract void accept(Visitor visitor);
}
2.2 DepartManager
package Manager;
import Visitor.Visitor;
public class DepartManager extends Manager {
private String name;
public DepartManager() {
}
public DepartManager(String name) {
this.name = "部门管理员 " + name;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
@Override
public void accept(Visitor visitor) {
visitor.AddEmployee(this);
}
}
2.3 CompanyManager
package Manager;
import Visitor.Visitor;
public class CompanyManager extends Manager {
private String name;
public CompanyManager() {
}
public CompanyManager(String name) {
this.name = "公司管理员 " + name;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
@Override
public void accept(Visitor visitor) {
visitor.AddDepartment(this);
}
}
3.Visitor
3.1 Visitor
package Visitor;
import Manager.CompanyManager;
import Manager.DepartManager;
public abstract class Visitor {
public abstract void AddDepartment(CompanyManager companyManager);
public abstract void AddEmployee(DepartManager departManager);
}
3.2 CreateEmployee
package Visitor;
import Manager.CompanyManager;
import Manager.DepartManager;
public class CreateEmployee extends Visitor {
@Override
public void AddDepartment(CompanyManager companyManager) {
System.out.println(companyManager.getName() + " 没有添加部门权限!");
}
@Override
public void AddEmployee(DepartManager departManager) {
System.out.println(departManager.getName() + " 添加雇员成功");
}
}
3.3 CreateDepartment
package Visitor;
import Manager.CompanyManager;
import Manager.DepartManager;
public class CreateDepartment extends Visitor {
@Override
public void AddDepartment(CompanyManager companyManager) {
System.out.println(companyManager.getName() + " 添加部门成功");
}
@Override
public void AddEmployee(DepartManager departManager) {
System.out.println(departManager.getName() + " 没有添加雇员权限!");
}
}
4.ObjectStructure
import Manager.Manager;
import Visitor.Visitor;
import java.util.ArrayList;
import java.util.List;
public class ObjectStructure {
private List<Manager> managers = new ArrayList<Manager>();
public void add(Manager manager) {
managers.add(manager);
}
public void remove(Manager manager) {
managers.remove(manager);
}
public void accept(Visitor visitor) {
for (Manager manager : managers) {
manager.accept(visitor);
}
}
}
5.Test
import Manager.CompanyManager;
import Manager.DepartManager;
import Visitor.CreateDepartment;
import Visitor.CreateEmployee;
import Visitor.Visitor;
public class Test{
public static void main(String[] args) {
ObjectStructure objectStructure = new ObjectStructure();
objectStructure.add(new CompanyManager("张三"));
objectStructure.add(new DepartManager("李四"));
Visitor visitor1 = new CreateDepartment();
Visitor visitor2 = new CreateEmployee();
objectStructure.accept(visitor1);
objectStructure.accept(visitor2);
}
}
6.运行截图
