下面以Mac和PC的CPU和RAM为例,代码如下:
Cpu.java
package com.flyingh.icpu;
public interface Cpu {
String cpuInfo();
}
MacCpu.java
package com.flyingh.cpu;
import com.flyingh.icpu.Cpu;
public class MacCpu implements Cpu {
@Override
public String cpuInfo() {
// TODO Auto-generated method stub
return "MacCpu";
}
}
PcCpu.java
package com.flyingh.cpu;
import com.flyingh.icpu.Cpu;
public class PcCpu implements Cpu {
@Override
public String cpuInfo() {
// TODO Auto-generated method stub
return "PcCpu";
}
}
Ram.java
package com.flyingh.iram;
public interface Ram {
String ramInfo();
}
MacRam.java
package com.flyingh.ram;
import com.flyingh.iram.Ram;
public class MacRam implements Ram {
@Override
public String ramInfo() {
// TODO Auto-generated method stub
return "MacRam";
}
}
PcRam.java
package com.flyingh.ram;
import com.flyingh.iram.Ram;
public class PcRam implements Ram {
@Override
public String ramInfo() {
// TODO Auto-generated method stub
return "PcRam";
}
}
Factory.java
package com.flyingh.ifactory;
import com.flyingh.icpu.Cpu;
import com.flyingh.iram.Ram;
public interface Factory {
Cpu createCpu();
Ram createRam();
}
MacFactory.java
package com.flyingh.factory;
import com.flyingh.cpu.MacCpu;
import com.flyingh.icpu.Cpu;
import com.flyingh.ifactory.Factory;
import com.flyingh.iram.Ram;
import com.flyingh.ram.MacRam;
public class MacFactory implements Factory {
@Override
public Cpu createCpu() {
// TODO Auto-generated method stub
return new MacCpu();
}
@Override
public Ram createRam() {
// TODO Auto-generated method stub
return new MacRam();
}
}
PcFactory.java
package com.flyingh.factory;
import com.flyingh.cpu.PcCpu;
import com.flyingh.icpu.Cpu;
import com.flyingh.ifactory.Factory;
import com.flyingh.iram.Ram;
import com.flyingh.ram.PcRam;
public class PcFactory implements Factory {
@Override
public Cpu createCpu() {
// TODO Auto-generated method stub
return new PcCpu();
}
@Override
public Ram createRam() {
// TODO Auto-generated method stub
return new PcRam();
}
}
Client.java
package com.flyingh.client;
import com.flyingh.factory.MacFactory;
import com.flyingh.factory.PcFactory;
import com.flyingh.icpu.Cpu;
import com.flyingh.ifactory.Factory;
import com.flyingh.iram.Ram;
public class Client {
public static void main(String[] args) {
Factory factory1=new MacFactory();
Factory factory2=new PcFactory();
Cpu macCpu=factory1.createCpu();
Ram macRam=factory1.createRam();
System.out.println(macCpu.cpuInfo());//MacCpu
System.out.println(macRam.ramInfo());//MacRam
Cpu pcCpu=factory2.createCpu();
Ram pcRam=factory2.createRam();
System.out.println(pcCpu.cpuInfo());//PcCpu
System.out.println(pcRam.ramInfo());//PcRam
}
}