java設計模式----簡單工廠

簡單工廠模式是類的創建模式,又叫做靜態工廠方法(Static Factory Method)模式。簡單工廠模式是由一個工廠對象決定創建出哪一種產品類的實例。下面是簡單工廠UML模型:


那麼簡單工廠模式是在什麼場景下使用呢,下面就以本人的理解舉例說明:

  就拿登錄功能來說,假如應用系統需要支持多種登錄方式如:手機認證、郵箱認證、用戶名登錄。那麼自然的做法就是建立一個各種登錄方式都適用的接口。

定義登錄接口:

package com.simple.factory;

/**
 * 登錄接口
 * */
public interface Login {
	public boolean login(String name, String password);
}

手機號碼登錄:

package com.simple.factory;

public class PhoneNumberLogin implements Login {

	@Override
	public boolean login(String name, String password) {
		// 登錄處理邏輯
		if (password.equals("123123")) {
			return true;
		} else {
			return false;
		}
	}
}

郵箱登錄:

package com.simple.factory;

/**
 * 郵箱登錄
 * */
public class EmailLogin implements Login {

	@Override
	public boolean login(String name, String password) {
		// 登錄處理邏輯
		if (password.equals("123123")) {
			return true;
		} else {
			return false;
		}
	}
}

用戶名登錄:

package com.simple.factory;

public class UserNameLogin implements Login {

	@Override
	public boolean login(String name, String password) {
		// 登錄處理邏輯
		if (password.equals("123123")) {
			return true;
		} else {
			return false;
		}
	}
}

靜態工廠核心類:

package com.simple.factory;

/**
 * 靜態工廠核心類
 * */
public class LoginManager {
	public static Login factory(String type) {
		if (type.equals("Email")) {
			return new EmailLogin();
		}
		if (type.equals("PhoneNumber")) {
			return new PhoneNumberLogin();
		}
		if (type.equals(type.equals("UserName"))) {
			return new UserNameLogin();
		}
		return null;
	}
}

測試客戶端:

package com.simple.factory;

/**
 * 測試客戶端
 * */
public class Client {
	public static void main(String[] args) {
		String mLoginType = "PhoneNumber";
		String name = "dashu";
		String password = "123123";
		Login login = LoginManager.factory(mLoginType);
		boolean bool = login.login(name, password);
		if (bool) {
			System.out.println("登錄成功");
		} else {
			System.out.println("登錄失敗");
		}
	}
}


簡單工廠模式的優點

  模式的核心是工廠類。這個類含有必要的邏輯判斷,可以決定在什麼時候創建哪一個登錄驗證類的實例,而調用者則可以免除直接創建對象的責任。簡單工廠模式通過這種做法實現了對責任的分割,當系統引入新的登錄方式的時候無需修改調用者。

簡單工廠模式的缺點

  這個工廠類集中了所以的創建邏輯,當有複雜的多層次等級結構時,所有的業務邏輯都在這個工廠類中實現。什麼時候它不能工作了,整個系統都會受到影響。


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