我有5个不同的班级。这些是座位,座位,预约。aseat、bseat、cseat正在继承seat类。约会类决定选择哪个类(aseat、bseat、cseat)。假设value(jobtype)等于1,我们得到aseat作为参数,如果它等于2bseat作为参数,如果它等于3,我们得到cseat作为参数。
我试过下面这样的代码,但没用
我该怎么做?
来自约会类(构造函数)的示例代码:
public Appointment(jobType,Seat seat) {
if(jobtype==1){
seat.ASeat.function1();
}
}
我想通过一个jobtype来定义类,我在下面写了几个例子来更好地理解它
public Appointment(1,ASeat aseat) {
ASeat.function1();
}
public Appointment(2,BSeat bseat) {
bseat.function2();
}
public Appointment(3,CSeat cseat) {
cseat.function3();
}
如果我用下面的方法。那就太不必要了
public Appointment(Dentist dentist, Patient patient,int jobType,ASeat aseat,BSeat bseat,CSeat cseat) {
if(jobType==1){
aseat.function1();
}
if(jobType==2){
bseat.function2();
}
if(jobType==3){
cseat.function3();
}
}
2条答案
按热度按时间2w3rbyxf1#
感觉就像你想使用factorypattern。
这里定义了一个明确的例子:
https://www.tutorialspoint.com/design_pattern/factory_pattern.htm
c6ubokkw2#
如果我理解正确的话,所有子类都有一个具有相同签名的方法,您希望调用该方法。
如果要调用它,需要在超类中提取它并重写它:
如果超类是抽象的,甚至可以使用抽象方法: