工厂模式是Java的常用设计模式之一,属于创建型模式。

优点:当多次调用一个方法时,它可以使代码更简单,可以不需要重复写这部分代码,调用者无需关心繁琐的实现过程。

缺点:当增加一个方法时需要创建一个类,并在工厂类中增加一个具体的方法实现,修改起来比较繁琐。

 

下面举个例子:

1、创建一个水果接口

public interface Fruit {
    void eat();
}

 

2、创建实现接口的“苹果”类

public class Apple implements Fruit {
    @Override
    public void eat(){
        System.out.println("------吃苹果-----");
    }
}

 

3、创建实现接口的”西瓜“类

public class Watermelon implements Fruit {
    @Override
    public void eat(){
        System.out.println("-------吃西瓜-------");
    }
}

 

4、创建一个工厂,指定具体的实现方法

public class FruitFactory {
    public Fruit getFruit(String type){
        if(type == null){
            return null;
        }

        if("watermelon".equals(type)){
            return new Watermelon();
        }else if("apple".equals(type)){
            return new Apple();
        }
        return null;
    }
}

 

5、使用工厂,传递一个”苹果“来实现具体方法,吃苹果

public class FruitDemo {
    public static void main(String[] args){
        FruitFactory fruitFactory = new FruitFactory();
        Fruit fruit = fruitFactory.getFruit("apple");
        fruit.eat();
    }
}

 

6、输出结果:

------吃苹果-----

 

注意:

当任何需要生成复杂对象的地方,是可以使用工厂模式,特别需要注意的是,如果只是通过new就能创建的对象则无需使用工厂模式,因为使用该模式必然需要创建一个工厂类,简单对象使用该方式反而会增加了系统的复杂度。