大家都知道,工厂模式是我们在用java进行开发,特别是J2EE开发中非常重要且广泛使用的核心模式。网上也有很多关于工厂模式的描述,但是对于很多初学朋友来说,过多的说一些优缺点,满篇的文字描述很是让大家云里雾里,没有一目了然的感觉,那么鄙人希望通过下面一个小小的例子来描述一下工厂模式,希望能够帮助到大家!
我们就以一个食品工厂的生产到产品的例子吧:(简单工厂模式)
让我们先来定义一个工厂:接口Factory ,工厂具有生产产品的功能 produce()。
package com.zhaofeng.jdbc2;
public interface Factory {
public void produce();
}
现在我们有一个食品加工厂FoodFactory,既然它也是工厂,那么它就需要实现工厂的功能吧。
package com.zhaofeng.jdbc2;
public class FoodFactory implements Factory{
@Override
public void produce() {
new ProcessFood();
}
public static void main(String[] args) {
Factory fac = new FoodFactory();//注意--返回的是工厂Factory
fac.produce();
}
}
它具备生产的“名头”还不行啊,他的实现生产啊,所以就出现了我们的生产类。
package com.zhaofeng.jdbc2;
public class ProcessFood {
public ProcessFood() {
System.out.println("加工出食品来啦!");
}
}
到现在为止我想大家应该可以通过这个小小的例子明白工厂模式到底是个什么情况了吧。但是有些初学的朋友们可能会疑问:搞了半天,这不是变复杂了吗? 这句话算是对了一半,为什么呢?因为你如果是个人做一个小东西的话,不使用工厂模式还更简单,但是一旦拿到企业级开发中就完全不行了,一个大项目有很多业务逻辑,它们要做很多很多不同和重复的事情,代码量自然不小,如果你不用工厂模式,你也可以做出来,那么你遇到的就是这种情况:
话说,有一土豪,他有三辆汽车——奔驰、宝马、奥迪,雇了司机为他开车。不过,土豪坐车时总是怪怪的:上奔驰车后跟司机说“开奔驰车!”,坐上宝马后他说“开宝马车!”,坐上奥迪说“开奥迪车!”。
你一定说:这人有病!直接说开车不就行了?!大笑 对,你肯定做了很多没有必要地重复事情。Java是一门面向对象的语言,将事物抽象成对象有助于我们更好的去理解事物。
工厂模式说白了就是一种面向对象编程的一种体现罢了。如果运用了工厂模式,我们就可以解决土豪的烦恼了,"开车!"。