假设一家4s店卖宝马和大众两种汽车,并且车种分为轿车和卡车两种,像这种工厂产品来自多个等级结构的,简单工厂和工厂方法难以实现需求,这时我们可以使用抽象工厂来实现。
下面看一下代码的简单实现;
1,先定义轿车和卡车的接口
//轿车
public interface Sedan {
public void run();
}
//卡车
public interface Truck {
public void run();
}
2,创建类分别去实现宝马和大众的轿车和卡车
public class BmwSedan implements Sedan{
@Override
public void run() {
System.out.println("喜提宝马轿车!");
}
}
public class BmwTruck implements Truck{
@Override
public void run() {
System.out.println("喜提宝马卡车!");
}
}
public class DaZSedan implements Sedan{
@Override
public void run() {
System.out.println("喜提大众轿车!");
}
}
public class DaZTruck implements Truck{
@Override
public void run() {
System.out.println("喜提大众卡车!");
}
}
3,定义一个生产车的工厂
public interface CarFactory {
public Truck productTruck();
public Sedan productSedan();
}
4,分别实现宝马和大众的工厂
public class BmwFactory implements CarFactory{
@Override
public Truck productTruck() {
return new BmwTruck();
}
@Override
public Sedan productSedan() {
return new BmwSedan();
}
}
public class DaZFactory implements CarFactory{
@Override
public Truck productTruck() {
return new DaZTruck();
}
@Override
public Sedan productSedan() {
return new DaZSedan();
}
}
5,模拟客户买不同的车
public class Customer {
public static void main(String args[]){
CarFactory bf = new BmwFactory();
bf.productSedan().run();
bf.productTruck().run();
CarFactory df = new DaZFactory();
df.productSedan().run();
df.productTruck().run();
}
}