一.
在工厂方法模式种,不再由单一的工厂类生产产品,而是由工厂类的子类实现具体产品的创建。当增加一个产品时,只需要增加一个相应的工厂类的子类,实现生产这种产品,便可以解决简单工厂生产太多产品导致其内部代码臃肿的问题。
二.通用写法
抽象产品:
public interface IProduct {
public void doService();
}
实现抽象产品:
public class ProductA implements IProduct {
@Override
public void doService() {
System.out.println("ProductA");
}
}
public class ProductB implements IProduct {
@Override
public void doService() {
System.out.println("ProductB");
}
}
抽象工厂:
public interface IFactory {
public IProduct produce();
}
实现抽象工厂:
public class FactoryA implements IFactory {
@Override
public IProduct produce() {
return new ProductA();
}
}
public class FactoryB implements IFactory {
@Override
public IProduct produce() {
return new ProductB();
}
}
测试:
public class Test {
public static void main(String[] args) {
IFactory factory = new FactoryA();
IProduct product = factory.produce();
product.doService();
}
}

3.uml类图

该模式的缺点:
1.类的个数过多,增加复杂度
2.抽象产品只能生产一种产品,可以用抽象工厂模式解决
3.增加系统的抽象性和理解难度。