工厂模式是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就能创建的对象则无需使用工厂模式,因为使用该模式必然需要创建一个工厂类,简单对象使用该方式反而会增加了系统的复杂度。