现在有乒乓球运动员和篮球话动员,乒乓球教练和篮球教练。为了出国交流,跟乒乓球相关的人员都需要学习英语,用工厂模式相关的代码实现
时间: 2024-09-30 17:14:15 浏览: 36
在工厂模式中,我们可以创建一个抽象的"教练"接口和两个具体的实现类:"乒乓球教练"和"篮球教练"。这个设计允许我们通过统一的方式来创建对象,而不必关心具体是哪种类型的教练。以下是用Java的简单代码实现:
```java
// 定义教练接口
public interface Coach {
void teach();
}
// 具体的乒乓球教练类
public class TableTennisCoach implements Coach {
@Override
public void teach() {
System.out.println("Table Tennis Coach is teaching in English");
}
}
// 具体的篮球教练类
public class BasketballCoach implements Coach {
@Override
public void teach() {
System.out.println("Basketball Coach is also learning to teach in English");
}
}
// 创建一个通用的教练工厂
public class CoachFactory {
public static Coach createCoach(String sport) {
if (sport.equals("Table Tennis")) {
return new TableTennisCoach();
} else if (sport.equals("Basketball")) {
return new BasketballCoach();
} else {
throw new IllegalArgumentException("Invalid sport");
}
}
}
// 使用场景
public class Main {
public static void main(String[] args) {
Coach coach = CoachFactory.createCoach("Table Tennis"); // 获取乒乓球教练
coach.teach(); // 输出乒乓球教练的教学信息
coach = CoachFactory.createCoach("Basketball"); // 获取篮球教练
coach.teach(); // 输出篮球教练的学习信息
}
}
```
在这个例子中,无论我们提供的是"Table Tennis"还是"Basketball",工厂方法会返回对应的教练实例,并且它们都实现了相同的"teach()"方法,这就体现了多态性。
阅读全文