1. 新建产品族接口
//我这里可以理解为生产一个产品需要两个步骤
//步骤1
public interface IProduct1 {
void product1();
}
//步骤2
public interface IProduct2 {
void product2();
}
2.新建工厂接口
//一个工厂生产一个产品都需要这两个步骤
public interface IFactory {
IProduct1 createProduct1();
IProduct2 createProduct2();
}
3.新建各个产品的产品族实现类
//生产产品A的步骤1
public class ProductA1 implements IProduct1 {
public void product1() {
System.out.println("create product A 1");
}
}
//生产产品A的步骤2
public class ProductA2 implements IProduct2 {
public void product2() {
System.out.println("create Product A 2");
}
}
//生产产品B的步骤1
public class ProductB1 implements IProduct1 {
public void product1() {
System.out.println("create Pruduct B 1");
}
}
//生产产品B的步骤2
public class ProductB2 implements IProduct2 {
public void product2() {
System.out.println(" create product B 2");
}
}
3.新建各个产品对应的工厂
//生产产品A的工厂
public class ProductAFactory implements IFactory {
public IProduct1 createProduct1() {
return new ProductA1();
}
public IProduct2 createProduct2() {
return new ProductA2();
}
}
//生产产品B的工厂
public class ProductBFactory implements IFactory {
public IProduct1 createProduct1() {
return new ProductB1();
}
public IProduct2 createProduct2() {
return new ProductB2();
}
}
4.最后就可以根据需要创建对应的工厂来生产对应的产品的产品族(这里为生产所需的一系列步骤)
public class AbstractFactoryTest {
public static void main(String[] args) {
ProductAFactory factory=new ProductAFactory();
factory.createProduct1().product1();
factory.createProduct2().product2();
}
}
结果截图
手绘对象关系图