簡單工廠模式是類的創(chuàng)建模式泰演,又叫做靜態(tài)工廠方法(Static Factory Method)模式。簡單工廠模式是由一個工廠對象決定創(chuàng)建出哪一種產(chǎn)品類的實例搁凸。
1.源代碼
public interface Say {
//登錄驗證
public boolean saySomething();
}
public class ChineseSay implements Say {
@Override
public void saySomething() {
sysout("你好媚值,我是好人")
}
}
public class EnglishSay implements Say {
@Override
public boolean saySomething() {
sysout("hello , i am a good man")
}
}
我們還需要一個工廠類SayManager护糖,根據(jù)調用者不同的要求褥芒,創(chuàng)建出不同的對象并返回。而如果碰到不合法的要求嫡良,會返回一個Runtime異常锰扶。
public class SayManager {
public static Say factory(String type){
if(type.equals("chinese")){
return new ChineseSay();
}else if(type.equals("english")){
return new EnglishSay();
}else{
/**
* 這里拋出一個自定義異常會更恰當
*/
throw new RuntimeException("沒有找到登錄類型");
}
}
}
測試類
public class Test {
public static void main(String[] args) {
String type = "chinese";
Say say = SayManager.factory(type);
say.saySomething();
}
}
2. 優(yōu)點
模式的核心是工廠類。這個類含有必要的邏輯判斷寝受,可以決定在什么時候創(chuàng)建哪一個類的實例坷牛,而調用者則可以免除直接創(chuàng)建對象的責任。簡單工廠模式通過這種做法實現(xiàn)了對責任的分割很澄,當系統(tǒng)引入新的說話方式(本例中)的時候無需修改調用者京闰。
3. 缺點
這個工廠類集中了所以的創(chuàng)建邏輯,當有復雜的多層次等級結構時甩苛,所有的業(yè)務邏輯都在這個工廠類中實現(xiàn)蹂楣。什么時候它不能工作了,整個系統(tǒng)都會受到影響浪藻。