介绍
工厂类拥有一个工厂方法(create),接收一个参数,通过不同的参数实例化不同的产品类。
优缺点
- 优点:
- 简单工厂的特点就是“简单粗暴”,通过一个含参的工厂方法,我们可以实例化任何产品类,无所不能。
- 缺点:
- 任何“东西”的子类都可以生产,负担太重。当所要生产产品种类非常多时,工厂方法的代码量可能会很庞大。
- 在遵循开闭原则(对拓展开放,对修改关闭)的条件下,简单工厂对于增加新的产品无能为力。因为增加新产品只能通过修改工厂方法来实现。
示例
- 普通-简单工厂类:
public class AnimalFactory {
//简单工厂设计模式(负担太重,不符合开闭原则)
public static Animal createAnimal(String name){
if("cat".equals(name)){
return new Cat();
}else if("dog".equals(name)){
return new Dog();
}else if("donkey".equals(name)){
return new Donkey();
}else{
return null;
}
}
}
- 静态方法工厂
public class AnimalFactory {
//该简单工厂也成称为静态方法工厂
public static Dog creatDog(){
return new Dog();
}
public static Donkey createDonkey(){
return new Donkey();
}
}