[设计模式]简单工厂模式

参考:http://blog.csdn.net/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

以上就是简单工厂设计模式






你可能感兴趣的:(设计模式,工厂模式)