参考:http://blog.csdn.net/jason0539/article/details/44976775
实例:
小明想买Ford品牌汽车,福特旗下品牌有fiesta, focus, mustang,gt,ranger。
抽象产品类 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