admin管理员组

文章数量:1516870

java 访客模式

假设这个模型类:

public class Car extends Vehicle implements Visitable {

.....

void accept(VehicleVisitor visitor){

visitor.visit(this);

}

.....

}

使用访客是因为决定允许某些车辆被授予的时间很晚(在Car类创建之后).

还有一个特定的Visitor层次结构,其中一个名为VehicleEvaluatorVisitor的基类继承自CarVisitor,其目的是告知车辆是否值得奖励:

public class VehicleEvaluatorVisitor implements VehicleVisitor {

boolean mustBeAwarded;

public visit(Car car){

....

mustBeAwarded= true; //after some conditional

}

.... //other visit methods

boolean mustVehicleBeAwarded(){

return mustBeAwarded;

}

}

此设计的目标是允许客户遍历任何车辆集合,以了解必须授予哪辆车:

...

VehicleEvaluatorVisitor visitor = new VehicleEvaluatorVisitor ();

for(Vehicle vehicle : vehicules){

vehicle.accept(visitor);

boolean mustToBeAwarded = visitor.mustVehicleBeAwarded();

.....

...

我的问题是:这是一个可接受的设计吗?

(当然,汽车和奖励概念只是一个理论的例子)

本文标签: java 访客模式