文章目錄
- 工廠模式
-
- 設計模式
- 設計模式的分類
- 工廠模式
- 小項目應用:i18n國際化
工廠模式
設計模式
- 設計模式是前輩總結的設計經驗
- 設計模式的目标是代碼更容易了解,更容易維護
- 通過設計模式可以讓代碼更加可靠
設計模式的分類
- 建立型模式:如何更加精巧的建立某些對象是所有其它模式的基本,工廠模式就是最簡單最重要的一種設計模式。
- 結構型模式:在軟體結構上通過重構和抽象,讓軟體的結構更有條理,更容易維護。
- 行為型模式:針對現實中某種具體的行為場景。
工廠模式
- 用于隐藏建立對象的細節(以中間人的角色幫助選擇指定的類并建立對象);
- 工廠模式核心:工廠類Factory(中間人的角色就是工廠類);
- 工廠模式可以細分為簡單工廠、工廠方法與抽象工廠(簡單工廠是最簡單使用最廣的模式);
由于具體實作類都是相似的,是以抽象出一個抽象接口,然後建立一個工廠類。根據客戶的需求由工廠類自動的建立具體實作類。客戶類不再直接面向具體的實作類,而是持有一個抽象的接口,工廠類傳回的也是這個接口。是以客戶類不需要建立了什麼具體實作類,隻要知道工廠類傳回的抽象接口就可以了。
小項目應用:i18n國際化
抽象接口:
package com.imooc.factory.i18n;
/**
* 國際化的頂級抽象 Internationalization
*/
public interface I18N {
public String getTitle();
}
工廠類:
package com.imooc.factory.i18n;
/**
* 工廠類:簡化對象建立的過程
* 使用者直接面向工廠類就可以了
*/
public class I18NFactory {
public static I18N getI18NObject(String area) {
//輸入一個具體的區域,傳回一個I18N某個具體實作類的對象
if (area.equals("china")) {
return new Chinese();
}else if(area.equals("spain")){
return new Spanish();
}else if(area.equals("italy")){
return new Italian();
}else {
return null;
}
}
}
入口類:
package com.imooc.factory;
import com.imooc.factory.i18n.I18N;
import com.imooc.factory.i18n.I18NFactory;
/**
* 軟體核心入口類,根據不同分地區顯示不同語言
*/
public class Software {
public static void main(String[] args) {
I18N i18n = I18NFactory.getI18NObject("spain");
System.out.println(i18n.getTitle());
}
}