简介
角色分析
抽象工厂(Abstract Factory)::提供了创建产品的接口,调用者通过它访问具体工厂的工厂方法 newProduct() 来创建产品。
具体工厂(ConcreteFactory):实现抽象工厂中的抽象方法,完成具体产品的创建。
抽象产品(Product):定义了产品的规范,描述了产品的主要特性和功能。
具体产品(ConcreteProduct):实现了抽象产品角色所定义的接口,由具体工厂来创建,它同具体工厂之间一一对应。
实现代码
//抽象产品
public interface Product {
public void way();
}
//实际产品A:实现抽象产品中的抽象方法
public class ProductA implements Product {
public void way() {
System.out.println("实际产品A");
}
}
//实际产品B:实现抽象产品中的抽象方法
public class ProductB implements Product {
public void way() {
System.out.println("实际产品B");
}
}
//实际产品C:实现抽象产品中的抽象方法
public class ProductC implements Product {
public void way() {
System.out.println("实际产品C");
}
}
//抽象工厂:提供了厂品的生成方法
interface AbstractFactory {
public Product getProduct();
}
//具体工厂A:实现了厂品的生成方法
public class FactoryA implements AbstractFactory {
public Product getProduct() {
System.out.println("具体工厂A生成-->具体产品A");
return new Product1();
}
}
//具体工厂B:实现了厂品的生成方法
public class FactoryB implements AbstractFactory {
public Product getProduct() {
System.out.println("具体工厂B生成-->具体产品B");
return new ProductB();
}
}
//具体工厂C:实现了厂品的生成方法
public class FactoryC implements AbstractFactory {
public Product getProduct() {
System.out.println("具体工厂C生成-->具体产品C");
return new ProductC();
}
}
//测试
public class App {
public static void main(String[] args) {
AbstractFactory factory = new FactoryA();
factory.getProduct().way();
}
}