参考:http://blog.youkuaiyun.com/jason0539/article/details/44976775
实例:
小明想买Ford品牌汽车,福特旗下品牌有fiesta, focus, mustang,gt,ranger。
一、简单工厂模式,它的组成(Ford汽车为例):
1、工厂类(Factory):核心,含有一定的商业逻辑和判断逻辑,用来创建/制作产品。
2、抽象产品类(Abstract Ford):一般是具体产品继承的父类或实现的接口。
3、具体产品(Mustang、Focus、 eg.):抽象产品类的具体实现类,工厂类创建的对象就是它的实例。
首先创建
抽象产品类 Ford.java 福特品牌
package com.javanet.designpatterns.factory.simple;
/**
* 工厂模式之
* 产品类 定义Ford汽车核心内容
*/
public abstract class Ford {
public Ford() {
}
}
其次创建具体产品类旗下子品牌若干
Fiesta.java
package com.javanet.designpatterns.factory.simple;
/**
* 产品类
* Ford汽车 Fiesta系列
*/
public class Fiesta extends Ford {
public Fiesta() {
System.out.println("Ford 之 Fiesta");
}
}
Focus.java
package com.javanet.designpatterns.factory.simple;
/**
* 产品类
* Ford汽车Focus系列
*/
public class Focus extends Ford {
public Focus() {
System.out.println("Ford 之 Focus");
}
}
Mustang.java
package com.javanet.designpatterns.factory.simple;
/**
* 产品类
* Ford汽车Mustang系列
*/
public class Mustang extends Ford {
public Mustang() {
System.out.println("Ford 之 Mustang");
}
}
至此产品类创建完毕,下面创建工厂类
Factory.java
package com.javanet.designpatterns.factory.simple;
/**
* 工厂类 制造Ford汽车的工厂
*/
public class Factory {
public static Ford productFord(String model) {
switch (model) {
case "fiesta":
return new Fiesta();
case "focus":
return new Focus();
case "mustang":
return new Mustang();
default:
return null;
}
}
}
至此小明就可以购买福特任意品牌的汽车了,定义小明类。
XiaoMing.java
package com.javanet.designpatterns.factory.simple;
/**
* 顾客小明购买汽车
*/
public class XiaoMing {
public static void main(String[] args) {
Ford mustang = Factory.productFord("mustang");
Ford focus = Factory.productFord("focus");
Ford fiesta = Factory.productFord("fiesta");
}
}
小明购买了 福特旗下mustang, focus, fiesta三辆汽车
Ford 之 Mustang
Ford 之 Focus
Ford 之 Fiesta
以上就是简单工厂设计模式