工厂模式的定义
定义一个创建产品对象的工厂接口,将产品对象的实际创建工作推迟到具体子工厂类当中。这满足创建型模式中所要求的“创建与使用相分离”的特点。
那现实中举个例子.比如学校中的食堂,就相当于工厂,每一个卖饭的窗口,都是具体的用来生产不同的食物的.
工厂模式的成员
- 抽象工厂
- 具体工厂
- 抽象产品
- 具体产品
实现
1,先定义一个产品对象的接口.我们拿食物来举例.
/**
*抽象产品
*/
public interface Food {
void eat();
}
2, 来一个抽象工厂
/**
* 抽象食物工厂
*/
public interface FoodFactory {
Food makeFood();
}
3, 来一个具体的产品
/**
* 具体产品
*/
public class BaoZi implements Food{
@Override
public void eat() {
System.out.println("小笼包很好吃.");
}
}
4, 来一个具体的工厂
/**
* 不同的工厂生产不同的产品
*/
public class BaoZiFactory implements FoodFactory{
@Override
public Food makeFood() {
return new BaoZi();
}
}
5 ,测试类
public static void main(String[] args) {
BaoZiFactory baoZiFactory = new BaoZiFactory();
Food food = baoZiFactory.makeFood();
food.eat();
}
6, 如果想要再来一个酸辣粉的工厂,那么只需要用酸辣粉实现抽象产品,再创建一个酸辣粉的工厂即可.
工厂模式的优缺点
优点: 封装对象创建过程的优点,降低客户端和工厂的耦合性.
缺点: 代码多,每创建一个对象,都要创建一个工厂.