/*** 食品抽象类*/
public abstract classFood {
}/*** 交通工具抽象类*/
public abstract classTransportation {
}/*** 电子设备抽象类*/
public abstract classElectronic {
}/*** bread类*/
public class Bread extendsFood {publicBread(){
System.out.println("T am bread");
}
}/*** plane类*/
public class Plane extendsTransportation{publicPlane(){
System.out.println("I am plane");
}
}/*** phone类*/
public class Phone extendsElectronic{publicPhone(){
System.out.println("I am phone");
}
}/*** 具体的工厂 可以生产一组类*/
public class HaierFactory extendsAbstractFactory{
Food createFood() {return newBread();
}
Electronic createElectronic() {return newPhone();
}
Transportation createTransportation() {return newPlane();
}
}/*** cake类*/
public class Cake extendsFood {publicCake(){
System.out.println("T am cake");
}
}/*** Tank类*/
public class Tank extendsTransportation{publicTank(){
System.out.println("I am tank");
}
}/*** Computer类*/
public class Computer extendsElectronic{publicComputer(){
System.out.println("T am pc");
}
}/*** 具体的工厂,可以生产一组类*/
public class SuningFactory extendsAbstractFactory{
Food createFood() {return newCake();
}
Electronic createElectronic() {return newComputer();
}
Transportation createTransportation() {return newTank();
}
}/*** 测试类,抽象工厂可以生产一组类,并且可以很灵活的扩展一组类的创建过程,但是不能做到灵活扩展一种类*/
public classT {public static voidmain(String[] args) {//海尔工厂可以生产面包 飞机 手机
AbstractFactory haierFactory = newHaierFactory();
Food bread=haierFactory.createFood();
Transportation plane=haierFactory.createTransportation();
Electronic phone=haierFactory.createElectronic();//苏宁工厂可以生产 蛋糕 坦克 pc电脑
AbstractFactory suningFactory = newSuningFactory();
Food cate=haierFactory.createFood();
Transportation tank=haierFactory.createTransportation();
Electronic computer=haierFactory.createElectronic();
}
}