用java写一个代码,有一个电脑的代工生产商有多家工厂Factory对应生产各种品牌的电脑Computer,它目前已经可以代工生产神州Shenzhou电脑、华为Huawei电脑,随着业务的拓展,这个代工生产商还要生产小米Xiaomi和华硕Asus的电脑。请运用面向对象思想,给出一个最优的设计方案并给出相应代码。(提示:工厂方法模式)
时间: 2024-02-21 11:57:50 浏览: 88
下面是Java的代码实现,使用工厂方法模式,将每个品牌的电脑生产过程封装在一个具体的工厂类中,每个工厂类实现一个抽象工厂接口:
```java
// 抽象工厂接口
interface ComputerFactory {
Computer produceComputer();
}
// 神州电脑工厂类
class ShenzhouFactory implements ComputerFactory {
public Computer produceComputer() {
return new ShenzhouComputer();
}
}
// 华为电脑工厂类
class HuaweiFactory implements ComputerFactory {
public Computer produceComputer() {
return new HuaweiComputer();
}
}
// 小米电脑工厂类
class XiaomiFactory implements ComputerFactory {
public Computer produceComputer() {
return new XiaomiComputer();
}
}
// 华硕电脑工厂类
class AsusFactory implements ComputerFactory {
public Computer produceComputer() {
return new AsusComputer();
}
}
// 电脑类
abstract class Computer {
protected String brand;
public String getBrand() {
return brand;
}
}
// 神州电脑类
class ShenzhouComputer extends Computer {
public ShenzhouComputer() {
this.brand = "神州";
}
}
// 华为电脑类
class HuaweiComputer extends Computer {
public HuaweiComputer() {
this.brand = "华为";
}
}
// 小米电脑类
class XiaomiComputer extends Computer {
public XiaomiComputer() {
this.brand = "小米";
}
}
// 华硕电脑类
class AsusComputer extends Computer {
public AsusComputer() {
this.brand = "华硕";
}
}
```
使用时,可以根据需要选择不同的工厂类来生产不同品牌的电脑:
```java
ComputerFactory shenzhouFactory = new ShenzhouFactory();
Computer shenzhouComputer = shenzhouFactory.produceComputer();
ComputerFactory huaweiFactory = new HuaweiFactory();
Computer huaweiComputer = huaweiFactory.produceComputer();
ComputerFactory xiaomiFactory = new XiaomiFactory();
Computer xiaomiComputer = xiaomiFactory.produceComputer();
ComputerFactory asusFactory = new AsusFactory();
Computer asusComputer = asusFactory.produceComputer();
```