简单工厂模式(静态工厂方法模式)
定义:定义一个具体的工厂类负责创建一些类的实例,实现创建者和调用者分离
创建一个食品抽象类Food
public abstract class Food {
public abstract void use();
}
创建一个小吃类Eat继承Food
public class Eat extends Food {
@Override
public void use() {
System.out.println("This food can eat");
}
}
创建一个饮料类Drink继承Food
public class Drink extends Food {
@Override
public void use() {
System.out.println("This food can drink");
}
}
创建一个食品工厂类
public class FoodFactory {
public static Food createFood(String foodName){
if(foodName.equals("eat")){
return new Eat();
}else if(foodName.equals("drink")){
return new Drink();
}else{
return null;
}
}
}
测试类:
public class Main {
public static void main(String[] args) {
Eat e = (Eat) FoodFactory.createFood("eat");
e.use();
Drink d = (Drink) FoodFactory.createFood("drink");
d.use();
}
}
控制台输出如下:
This food can eat
This food can drink
工厂类的优缺点:
优点:
客户端不需要负责对象的创建,明确的各个类的职责
缺点:
静态工厂类负责对所有对象的创建,如果有新对象的增加,不利于后期的维护