public static Company CarFactory(String userBrand,String userModel,String userSeat,String userTonnage, List<Company> listCar, List<Company> bus,List<Company> GoodsCar,int useIn) {//车辆工厂按需求造车 String brand = "";//初始化 String seat = ""; String model = ""; String tonnage = ""; float price = 0; int id = 0; String license = ""; if (useIn == 1) {//创造轿车 for (Company com : listCar) { Truck com1 = (Truck) com; if (userBrand.equalsIgnoreCase(com.getBrand())//寻找系统是否存在该轿车 && userModel.equalsIgnoreCase(com1.getModel())) { brand = com.getBrand(); model = com1.getModel(); price = com.getPrice(); id = com.getId(); license = com.getLicense(); break; } }return new Truck(brand, model, price, id, license);//返回一个新的轿车对象 } else if (useIn == 2) { for (Company com : bus) { Sedan com1 = (Sedan) com; if (userBrand.equalsIgnoreCase(com.getBrand()) //寻找系统是否存在该客车 && userSeat.equalsIgnoreCase(com1.getSeat())) { brand = com.getBrand(); seat = com1.getSeat(); price = com.getPrice(); id = com.getId(); license = com.getLicense(); break; } }return new Sedan(brand, seat, price, id, license);//返回一个新的客车对象 }else if (useIn == 3) { for (Company com : GoodsCar) { GoodsVehicle com1 = (GoodsVehicle) com; if (userBrand.equalsIgnoreCase(com.getBrand()) //寻找系统是否存在该货车 && userTonnage.equalsIgnoreCase(com1.getTonnage())) { brand = com.getBrand(); tonnage = com1.getTonnage(); price = com.getPrice(); id = com.getId(); license = com.getLicense(); break; } }return new GoodsVehicle(brand, tonnage, price, id, license);//返回一个新的货车对象 }else { return null; } } }
时间: 2024-01-04 11:03:19 浏览: 29
这段代码是一个静态方法 CarFactory,接受四个参数 userBrand、userModel、userSeat 和 userTonnage,以及三个车辆列表 listCar、bus 和 GoodsCar,以及一个整数 useIn。
根据 useIn 的不同取值,CarFactory 会分别从不同的车辆列表中查找符合用户需求的车辆,并返回一个新的车辆对象。如果没有找到符合需求的车辆,则返回 null。
其中,轿车对象的类名为 Truck,客车对象的类名为 Sedan,货车对象的类名为 GoodsVehicle。这些车辆对象都具有品牌、型号、价格、ID 和车牌号等属性。
该方法的主要作用是根据用户需求创建相应的车辆对象。
相关问题
(5)编写类carfactory,该类定义了一个静态方法getcar(),它可以根据用户指定的车型
来创建并返回对应的Car对象。假设我们有三种车型:轿车、SUV和卡车,对应的类分别为Car、SUV和Truck。
代码如下:
```python
class Car:
def __init__(self):
self.type = 'car'
class SUV:
def __init__(self):
self.type = 'SUV'
class Truck:
def __init__(self):
self.type = 'truck'
class CarFactory:
@staticmethod
def getcar(car_type):
if car_type == 'car':
return Car()
elif car_type == 'SUV':
return SUV()
elif car_type == 'truck':
return Truck()
else:
raise ValueError('Invalid car type')
```
使用示例:
```python
car = CarFactory.getcar('car') # 创建一个轿车对象
suv = CarFactory.getcar('SUV') # 创建一个SUV对象
truck = CarFactory.getcar('truck') # 创建一个卡车对象
```
注意:这里使用了静态方法,因此可以通过类名直接调用getcar()方法,不需要先创建一个CarFactory对象。同时,如果传入的车型不在预定义的三种之内,将会抛出一个ValueError异常。
ioc控制反转和di注入实验
控制反转(IoC)和依赖注入(DI)是面向对象编程(OOP)中常见的设计模式,它们可以帮助我们更好地组织和管理代码。下面是一个简单的实验来演示IoC和DI。
假设我们有一个简单的类 `Car`:
```java
public class Car {
private String name;
public Car(String name) {
this.name = name;
}
public void start() {
System.out.println("Starting " + name);
}
}
```
这个类有一个构造函数和一个启动方法。
现在我们想要在另一个类中使用 `Car` 类,但我们不想直接在这个类中创建 `Car` 对象。这就是IoC的思想,我们将控制权交给外部,由外部来创建和管理 `Car` 对象。
首先,我们定义一个接口 `CarFactory`:
```java
public interface CarFactory {
Car createCar(String name);
}
```
这个接口有一个方法 `createCar`,用于创建 `Car` 对象。
然后,我们实现一个具体的 `CarFactory` 类:
```java
public class SimpleCarFactory implements CarFactory {
public Car createCar(String name) {
return new Car(name);
}
}
```
这个类实现了 `CarFactory` 接口,并实现了 `createCar` 方法来创建 `Car` 对象。
现在,我们可以在另一个类中使用 `CarFactory` 来创建 `Car` 对象,而不是直接创建它们:
```java
public class CarStarter {
private CarFactory carFactory;
public CarStarter(CarFactory carFactory) {
this.carFactory = carFactory;
}
public void startCar(String name) {
Car car = carFactory.createCar(name);
car.start();
}
}
```
这个类有一个构造函数,它接受一个 `CarFactory` 对象,并使用它来创建 `Car` 对象。这就是DI的思想,我们将依赖关系注入到类中,而不是在类内部创建它们。
现在,我们可以在主函数中使用 `CarStarter` 类来启动 `Car` 对象:
```java
public static void main(String[] args) {
CarFactory carFactory = new SimpleCarFactory();
CarStarter carStarter = new CarStarter(carFactory);
carStarter.startCar("BMW");
}
```
这个程序将创建一个 `SimpleCarFactory` 对象,并将它传递给 `CarStarter` 对象的构造函数。然后,它将调用 `startCar` 方法来启动一个名为 "BMW" 的 `Car` 对象。
这就是一个简单的IoC和DI的实验。通过使用这些设计模式,我们可以更好地组织和管理代码,并使代码更容易测试和维护。
相关推荐
![docx](https://img-home.csdnimg.cn/images/20210720083331.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)