java 建造者+继承实现 demo
时间: 2023-12-20 07:07:49 浏览: 28
好的,下面是一个更完整的 Java 建造者+继承实现的 demo:
我们以一个简单的电脑制造系统为例,其中有两种不同类型的电脑:台式机和笔记本。台式机和笔记本都需要进行多个步骤的构建,比如选择 CPU、安装内存、安装硬盘等等。我们可以使用建造者模式来实现这些步骤的构建,然后让台式机和笔记本分别继承自一个抽象的电脑类,从而实现代码的重用。
首先,我们定义一个抽象的电脑类,其中包含了电脑的基本属性和方法:
```java
public abstract class Computer {
protected String cpu;
protected String memory;
protected String hardDisk;
public String getCpu() {
return cpu;
}
public String getMemory() {
return memory;
}
public String getHardDisk() {
return hardDisk;
}
public abstract void setCpu(String cpu);
public abstract void setMemory(String memory);
public abstract void setHardDisk(String hardDisk);
}
```
然后,我们定义一个抽象的建造者类,其中包含了电脑构建的各个步骤:
```java
public abstract class ComputerBuilder {
protected Computer computer;
public Computer getComputer() {
return computer;
}
public void createNewComputer() {
computer = new Computer();
}
public abstract void buildCpu();
public abstract void buildMemory();
public abstract void buildHardDisk();
}
```
接下来,我们定义具体的台式机和笔记本类,它们继承自抽象的电脑类,并实现了其中的抽象方法:
```java
public class Desktop extends Computer {
@Override
public void setCpu(String cpu) {
this.cpu = cpu;
}
@Override
public void setMemory(String memory) {
this.memory = memory;
}
@Override
public void setHardDisk(String hardDisk) {
this.hardDisk = hardDisk;
}
}
public class Laptop extends Computer {
@Override
public void setCpu(String cpu) {
this.cpu = cpu;
}
@Override
public void setMemory(String memory) {
this.memory = memory;
}
@Override
public void setHardDisk(String hardDisk) {
this.hardDisk = hardDisk;
}
}
```
最后,我们定义具体的台式机建造者和笔记本建造者类,它们继承自抽象的建造者类,并实现了其中的抽象方法:
```java
public class DesktopBuilder extends ComputerBuilder {
@Override
public void buildCpu() {
computer.setCpu("Desktop CPU");
}
@Override
public void buildMemory() {
computer.setMemory("Desktop Memory");
}
@Override
public void buildHardDisk() {
computer.setHardDisk("Desktop Hard Disk");
}
}
public class LaptopBuilder extends ComputerBuilder {
@Override
public void buildCpu() {
computer.setCpu("Laptop CPU");
}
@Override
public void buildMemory() {
computer.setMemory("Laptop Memory");
}
@Override
public void buildHardDisk() {
computer.setHardDisk("Laptop Hard Disk");
}
}
```
使用时,我们可以先创建一个具体的建造者对象,然后根据需要选择对应的建造者方法,最后获取构建好的电脑对象:
```java
public class Demo {
public static void main(String[] args) {
ComputerBuilder builder = new DesktopBuilder();
builder.createNewComputer();
builder.buildCpu();
builder.buildMemory();
builder.buildHardDisk();
Computer desktop = builder.getComputer();
builder = new LaptopBuilder();
builder.createNewComputer();
builder.buildCpu();
builder.buildMemory();
builder.buildHardDisk();
Computer laptop = builder.getComputer();
}
}
```
这样,我们就可以通过建造者模式和继承,快速创建出不同类型的电脑,并且可以在代码中重用已有的代码。