public abstract class Cpu {
public abstract void calculate();
}
public class AmdCpu extends Cpu{
@Override
public void calculate() {
System.out.println("Amd cpu 运行中");
}
}
public class IntelCpu extends Cpu{
@Override
public void calculate() {
System.out.println("intel cpu 运行中");
}
}
public abstract class Memory {
public abstract void storage();
}
public class AmdMemory extends Memory{
@Override
public void storage() {
System.out.println("amd 内存 存储中");
}
}
public class IntelMemory extends Memory{
@Override
public void storage() {
System.out.println("intel 内存 存储中");
}
}
public class Computer {
private Cpu cpu;
private List<Memory> memoryList;
public Cpu getCpu() {
return cpu;
}
public void setCpu(Cpu cpu) {
this.cpu = cpu;
}
public List<Memory> getMemoryList() {
return memoryList;
}
public void setMemoryList(List<Memory> memoryList) {
this.memoryList = memoryList;
}
public Computer() {
}
public Computer(Cpu cpu, List<Memory> memoryList) {
this.cpu = cpu;
this.memoryList = memoryList;
}
public void startRun(){
cpu.calculate();
for (Memory memory : memoryList){
memory.storage();
}
}
// 提供一个按照的如可:行为
public void installUSB(USB usb){
usb.connect();
// 独有功能
if (usb instanceof Mouse){
Mouse mouse = (Mouse) usb;
mouse.click();
} else if (usb instanceof KeyBoard) {
KeyBoard keyBoard = (KeyBoard) usb;
keyBoard.keyDown();
}
}
}
public interface USB {
void connect();
}
public class KeyBoard implements USB {
private String name;
public KeyBoard(String name) {
this.name = name;
}
@Override
public void connect() {
System.out.println(name + "成功的接入设备了~~~");
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public void keyDown(){
System.out.println(name + "输入:老铁,777~~~");
}
}
public class Mouse implements USB {
private String name;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Mouse(String name) {
this.name = name;
}
@Override
public void connect() {
System.out.println(name + "成功的接入了设备~~~");
}
public void click(){
System.out.println(name + "双击~~~");
}
}