访问者实例1
现在要开发一套客户管理系统,公司的客户分为两种:企业客户和个人客户。现需要处理客户提出的服务请求、对客户进行行为预测以及分析客户价值。
Visitor
public interface Visitor {
public interface Visitor {
void visitPersonalCustomer(PersonalCustomer customer);
void visitEnterpriseCustomer(EnterpriseCustomer customer);
}Element:客户Customer
public abstract class Customer{
public abstract void accept(Visitor visitor);
}ConcreteElement:两种客户类型
//个人客户
public class PersonalCustomer extends Customer {
private String name;
private int age;
... 省略getter setter...
@Override
public void accept(Visitor visitor) {
visitor.visitPersonalCustomer(this);
}
}
//企业用户
public class EnterpriseCustomer extends Customer {
private String name;
private String address;
... 省略getter setter...
@Override
public void accept(Visitor visitor) {
visitor.visitEnterpriseCustomer(this);
}
}ConcreteVisitor
ObjectStructure:客户集合
Client
可以看出,要对被访问者(通常是元素集合)增加新功能,只需要新增一个访问者类。 Element中accept哪种访问者,就可以调用该访问者实现的功能。
Last updated