工廠模式-簡單工廠模式【初涉】

定義:

  1. 稱爲靜態工廠方法(Static Factory Method)模式,它屬於類創建型模式。
  2. 在簡單工廠模式中,可以根據參數的不同返回不同類的實例

優勢

  1. 對象的創建和對象的使用實現了分離,客服端不需要了解實現細節,降低耦合度
  2. 當你需要什麼,只需要傳入一個正確的參數,就可以獲取你所需要的對象,而無須知道其創建細節。

劣勢:

  1. 不符合開閉原則,添加新產品需要修改邏輯代碼

結構:

工廠角色 工廠核心類,負責創建具體的目標類
抽象目標 規範子類的公共屬性
具體目標 實現抽象功能,一般是多個實現類,工廠類創建就是該類類的對象

UML圖:

工廠類:

package com.project.factory.simplefactory;

import com.project.factory.methodfactory.ICar;
import com.project.factory.simplefactory.impl.Aody;
import com.project.factory.simplefactory.impl.Byd;
/**
 * 簡單工廠類,傳入創建車型,創建相應車型,缺陷不能添加車型
 * @author Administrator
 *
 */
public class SimpleFactory {
	public ICar createCar(String type) {
		if (type.equals("奧迪")) {
			return new Aody();
		} else if (type.equals("比亞迪")) {
			return new Byd();
		}
		return null;
	}
}

抽象目標:

package com.project.factory.simplefactory;

/**
 * 卡車接口
 * @author Administrator
 *
 */
public interface ICar {
	/**
	 * 卡車奔跑
	 */
	public void run();
}

實現類:

package com.project.factory.simplefactory.impl;

import com.project.factory.methodfactory.ICar;

/**
 * 奧迪車
 * @author Administrator
 *
 */
public class Aody implements ICar {

	@Override
	public void run() {
		System.out.println("奧迪跑");

	}
}
package com.project.factory.simplefactory.impl;

import com.project.factory.methodfactory.ICar;
/**
 * 比亞迪車
 * @author Administrator
 *
 */
public class Byd implements ICar {

	@Override
	public void run() {
		System.out.println("比亞迪跑");

	}

}

測試類:

package com.project.factory.simplefactory;

import com.project.factory.methodfactory.ICar;
import com.project.factory.simplefactory.impl.Aody;
import com.project.factory.simplefactory.impl.Byd;

public class Client {
	public static void main(String[] args) {
		SimpleFactory factory = new SimpleFactory();
		ICar car = factory.createCar("奧迪");
		System.out.println(car);
	}
}

參考:http://www.cnblogs.com/Bobby0322/p/4178412.html

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章