一、由来
此模式由简单工厂演化而来。
简单工厂模式上篇文章提到过,由于扩展功能时核心类需要做修改,所以不是完全符合“开 - 闭”原则。工厂方法模式(Factory Method)解决了这个问题,工厂方法模式是完全符合“开 - 闭”原则的。
二、模式架构
简单工厂的核心类被拆分为一个工厂接口和若干个工厂实现类。产品接口与产品类都不变。
public interface Ifactory
{
public Product factory();//工厂方法(此模式名字由来)
}
public class BookFactory implements Ifactory
{
public Product factory()
{
return new MathBook();
}
}
三、利弊分析
优点:扩展功能时,只需添加一个工厂实现类即可。避免了某些没睡醒的程序员(有可能前一天晚上“工作”太累了),不小心把简单工厂的核心类改坏了,影响了其他同僚的模块。
缺点:工厂类可能会变多(又想程序扩展性好,还怕类变多,哪有那么好的事,人要学会满足)。