工厂模式是对简单工厂的进一步抽象和改进,将工厂和产品的关系从1:n提升至1:1,也就是一个工厂生产专一的产品。
UML图如下:
示例代码:
// 抽象产品:提供了产品接口
interface Product {
public void show();
}
// 具体产品1:实现抽象产品中的抽象方法
class ConcreteProduct1 implements Product {
public void show() {
System.out.println("具体产品1显示...");
}
}
// 具体产品2:实现抽象产品中的抽象方法
class ConcreteProduct2 implements Product {
public void show() {
System.out.println("具体产品2显示...");
}
}
// 抽象工厂:提供生产产品的接口
interface AbstractFactory {
public Product newProduct();
}
// 具体工厂1:实现产品1的生产
class ConcreteFactory1 implements AbstractFactory {
public Product newProduct() {
System.out.println("具体工厂1生成-->具体产品1...");
return new ConcreteProduct1();
}
}
// 具体工厂2:实现产品2的生产
class ConcreteFactory2 implements AbstractFactory {
public Product newProduct() {
System.out.println("具体工厂2生成-->具体产品2...");
return new ConcreteProduct2();
}
}
// Client
public class Client {
public static void main(string[] args) {
try
{
Product a;
AbstractFactory af;
af = (AbstractFactory)ReadXML.getObject();
a = af.newProduct;
a.show();
}
catch(Exception e)
{
System.out.println(e.getMessage());
}
}
}