工厂模式完整版

160 阅读1分钟

工厂引入

首先我们有一个food类,要生产不同的产品

public abstract class Food {
	public void eat();
}

然后加两个子类

public class Bread extends Food{
	@Override
	public void eat() {
		System.out.println("mianbao");
	}
}
public class MushRoom extends Food{
	@Override
	public void eat() {
		System.out.println("蘑菇");
	}
}

然后测试代码

public static void main(String[] args) {
		Food food=new Bread();
		food.eat();
	}

这里如果我要生产面别就new 面包 生产别的就new 别的

但是有一个问题,如果我想要在生产的过程中自定义一些配置,那么就麻烦了, 没错new 都要写一遍配置,不然放进工厂里面,配置好后直接拿出来。

简单工厂

public class SimpleFactory {


	public Bread createBread(){
		//自定义配置
		return new Bread();
	}
	public MushRoom createMushRoom(){
		//自定义配置
		return new MushRoom();
	}
}

这样就方便了不少,但是也有问题,就是每次都要到这个类里面去写,要扩展他的属性和方法挺麻烦的,容易乱。你可以想一想如果一个类有10个方法 ,然后里面有1000类要生产 那是不是直接爆炸。

工厂方法

就是每一个类一个工厂 你想这么扩展都随便

抽象工厂

因为工厂方法有缺学 当有多个产品在一个工厂里生产时,就会很不方便,那我们就需要,写一个大的抽象工厂,里面写好要生产的抽象产品,如果用工厂方法去继承实现他,最后直接调用工厂就可以了。