工厂模式 分为简单工厂模式、工厂方法模式 和 抽象工厂方法模式。
简单工厂模式,严格意义上讲不算设计模式,而是一种编程习惯,根据传递的参数来判断返回一个具体的对象。
首先我们创建一个 net.haicoder.factory.simple
包,在该包下面创建 AbstractProduct.java
和 BusProduct.java
和 CarProduct.java
和 SimpleFactory.java
和 TestMain.java
文件。文件创建完毕,目录结构如下图:
AbstractProduct.java
文件具体代码如下:
package net.haicoder.factory.simple;
/**
* 定义一个抽象产品类
*/
public abstract class AbstractProduct {
/**
* 生产产品
*/
protected abstract void produce();
}
BusProduct.java
文件具体代码如下
package net.haicoder.factory.simple;
public class BusProduct extends AbstractProduct {
protected void produce() {
System.out.println("嗨客网(www.haicoder.net)");
System.out.println("Hello world , I am a Bus");
}
}
CarProduct.java
文件具体代码如下
package net.haicoder.factory.simple;
/**
* 小汽车产品
*/
public class CarProduct extends AbstractProduct {
protected void produce() {
System.out.println("嗨客网(www.haicoder.net)");
System.out.println("Hello world , I am a new Car");
}
}
SimpleFactory.java
文件具体代码如下
package net.haicoder.factory.simple;
public class SimpleFactory {
/**
* 简单工厂,生产出具体对象
*
* @param productName
* @return
*/
public AbstractProduct getProduct(String productName) {
if ("bus".equals(productName)) {
return new BusProduct();
} else if ("car".equals(productName)) {
return new CarProduct();
}
return null;
}
}
TestMain.java
文件具体代码如
package net.haicoder.factory.simple;
public class TestMain {
public static void main(String[] args) {
SimpleFactory simpleFactory = new SimpleFactory();
AbstractProduct product = simpleFactory.getProduct("car");
product.produce();
}
}
程序运行后,控制台输出如下信息:
设计模式中的简单工厂模式,严格意义上讲不算设计模式,而是一种编程习惯,根据传递的参数来判断返回一个具体的对象。