工厂模式优点:
- 仍然具有简单工厂的优势,服务端与客户端解耦。
- 当客户端需要扩展一个新的产品时,不需要修改原先的代码,只是扩展一个新的工厂,符合ocp原则。
工厂模式缺点:
- 如果有多个产品等级,那么工厂类的数量就会爆炸式增长。
package com.fjh.factory.simplefactory.factory;
interface Food{
void eat();
}
class Hamburger implements Food {
@Override
public void eat() {
System.out.println("吃汉堡");
}
}
interface FoodFactory{
Food getFood();
}
class HamburgerFactory implements FoodFactory{
@Override
public Food getFood() {
return new Hamburger();
}
}
class Rise implements Food {
@Override
public void eat() {
System.out.println("吃饭");
}
}
class RiseFactory implements FoodFactory{
@Override
public Food getFood() {
return new Rise();
}
}
class Bussiness{
public static void taste(FoodFactory foodFactory){
Food food = foodFactory.getFood();
System.out.println("小甲");
food.eat();
Food food2 = foodFactory.getFood();
System.out.println("小乙");
food2.eat();
Food food3 = foodFactory.getFood();
System.out.println("小丙");
food3.eat();
}
}
public class FactoryTest {
public static void main(String[] args){
FoodFactory ff = new HamburgerFactory();//工厂名趋向于稳定。
Food food = ff.getFood();
food.eat();
FoodFactory ff2 = new RiseFactory();
Food food2 = ff2.getFood();
food2.eat();
Bussiness.taste(ff);
}
}