1 和简单工厂一样,我们需要产品接口和具体的产品
2 不同的产品对应不同的工厂,所以我们需要抽象的工厂和具体的工厂(个人觉得和使用反射的简单工厂相比,仅仅只是减少了反射带来的风险。当然,另一个好处是一个具体的工厂可以有不同的创建方法)
abstract class AbstractFactory {
public abstract IProduct createProduct();
}public class FactoryA extends AbstractFactory{
@Override
public IProduct createProduct() {
return new ConcreteProductA();
}
}public class FactoryB extends AbstractFactory {
@Override
public IProduct createProduct() {
return new ConcreteProductB();
}
}
为创建一组相关或相互依赖的对象(即产品族)提供一个借口,无需指定它们的具体类,我们使用了抽象工厂
举个简单的例子,生产电脑
1 假设我们需要不同型号的CPU和主板。我们需要CPU接口-具体实现,主板接口-具体实现
public intece Cpu {
void calculate();
}public class IntelCpu implements Cpu{
private int pins = 0;
public IntelCpu(int pins) {
this.pins = pins;
}
@Override
public void calculate() {
System.out.println("Intel CPU的针脚数:" + pins);
}
}public class AmdCpu implements Cpu {
private int pins = 0;
public AmdCpu(int pins) {
this.pins = pins;
}
@Override
public void calculate() {
System.out.println("AMD CPU的针脚数:" + pins);
}
}public intece Mainboard {
void installCPU();
}public class IntelMainboard implements Mainboard {
private int cpuHoles = 0;
public IntelMainboard(int cpuHoles) {
this.cpuHoles = cpuHoles;
}
@Override
public void installCPU() {
System.out.println("Intel主板的CPU插槽孔数是:" + cpuHoles);
}
}public class AmdMainboard implements Mainboard {
private int cpuHoles = 0;
public AmdMainboard(int cpuHoles) {
this.cpuHoles = cpuHoles;
}
@Override
public void installCPU() {
System.out.println("AMD主板的CPU插槽孔数是:" + cpuHoles);
}
}
本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/jisuanjixue/article-33899-3.html
你们都是中国人
也许是之前中国放出去的
有写小说经历且勉强可以的1