抽象工厂模式统称为工厂模式,一搬说工厂模式时都指的是抽象工厂模式。
介绍如下:
案列结构:
代码结构:
轿车:
package com.zxf.absfactory;
//轿车抽象
public interface Sedan {
//启动轿车的方法
public void run();
}
卡车:
package com.zxf.absfactory;
//卡车抽象
public interface Trunk_A {
//启动卡车的方法
public void run();
}
工厂:
package com.zxf.absfactory;
//抽象工厂
public interface CarFactory {
//生产卡车
public Trunk_A produceTrunk();
//生产轿车
public Sedan produceSedan();
}
宝马工厂:
package com.zxf.absfactory;
//生产宝马品牌的车
public class BmwFactory implements CarFactory {
@Override
public Trunk_A produceTrunk() {
// TODO Auto-generated method stub
return new BmwTrunk();
}
@Override
public Sedan produceSedan() {
// TODO Auto-generated method stub
return new BmwSedan();
}
}
宝马轿车:
package com.zxf.absfactory;
public class BmwSedan implements Sedan {
@Override
public void run() {
// TODO Auto-generated method stub
System.out.println("宝马轿车启动!");
}
}
宝马卡车:
package com.zxf.absfactory;
public class BmwTrunk implements Trunk_A {
@Override
public void run() {
// TODO Auto-generated method stub
System.out.println("宝马卡车启动!");
}
}
奥迪工厂:
package com.zxf.absfactory;
//生产奥迪品牌的车
public class AodiFactory implements CarFactory {
@Override
public Trunk_A produceTrunk() {
// TODO Auto-generated method stub
return new AodiTrunk();
}
@Override
public Sedan produceSedan() {
// TODO Auto-generated method stub
return new AodiSedan();
}
}
奥迪轿车:
package com.zxf.absfactory;
public class AodiSedan implements Sedan {
@Override
public void run() {
// TODO Auto-generated method stub
System.out.println("奥迪轿车启动!");
}
}
奥迪卡车:
package com.zxf.absfactory;
public class AodiTrunk implements Trunk_A {
@Override
public void run() {
// TODO Auto-generated method stub
System.out.println("奥迪卡车启动!");
}
}
顾客(测试类):
package com.zxf.absfactory;
public class Customer {
public static void main(String[] args) {
//宝马
CarFactory bm = new BmwFactory();
bm.produceSedan().run();
bm.produceTrunk().run();
//奥迪
AodiFactory ad = new AodiFactory();
ad.produceSedan().run();
ad.produceTrunk().run();
}
}
运行结果:
至此,工厂模式已全部结束!!