介绍
工厂方法是针对每一种产品提供一个工厂类。通过不同的工厂实例来创建不同的产品实例。
优缺点
- 优点:
- 工厂方法模式就很好的减轻了工厂类的负担,把某一类/某一种东西交由一个工厂生产;(对应简单工厂的缺点1)
- 同时增加某一类“东西”并不需要修改工厂类,只需要添加生产这类“东西”的工厂即可,使得工厂类符合开放-封闭原则。
- 缺点:
- 对于某些可以形成产品族的情况处理比较复杂。
示例
- 抽象出来的工厂对象
//抽象出来的动物工厂----它负责生产一种产品
public abstract class AnimalFactory{
//工厂方法
public abstract Animal createAnimal();
}
- 具体的对象工厂
//具体的工厂实现类
public class CatFactory extends AnimalFactory{
@Override
public Animal createAnimal(){
return new Cat();
}
}
//具体的工厂实现类2
public class DogFactory extends AnimalFactory{
@Override
public Animal createAnimal(){
return new Cat();
}
}