工廠模式簡單的JAVA實例:
一個工廠生產手機:
首先定義一個手機公共接口:
//所有手機的公共接口
interface MobilePhone{
//獲取手機信息
String getPhoneInfo();
//打電話
void makePhoneCalls();
//發短信
void sendShortMessage();
}
然後定義幾中不同手機的具體類:
class IPhone7 implements MobilePhone{
@Override
public String getPhoneInfo() {
return "I am an Iphone7.";
}
@Override
public void makePhoneCalls() {
//...
}
@Override
public void sendShortMessage() {
//...
}
}
class IPhone7s implements MobilePhone{
@Override
public String getPhoneInfo() {
return "I am an Iphone7s.";
}
@Override
public void makePhoneCalls() {
//...
}
@Override
public void sendShortMessage() {
//...
}
}
最後給出工廠類:
/**
* 工廠類
* 手機生產廠
*/
public class Foxconn {
public MobilePhone producePhone(String phoneType) throws Exception{
if(phoneType.equals("7"))
return new IPhone7();
else if(phoneType.equals("7s"))
return new IPhone7s();
else
throw new Exception();//指令不識別
}
}
工廠模式的優缺點:
優點:使用工廠模式創建具體實例時,創建方法可以更有描述性,比單純的使用構造函數易於理解。並且滿足java的封裝要求,明確職責,整體結構優化。
缺點:違反了高內聚原則,所有類的創建邏輯都在一個方法裏。需要添加新的產品時不能直接實現生產新產品的邏輯,必須修改工廠類,添加IF判斷,重新編譯,違反了“開閉原則”。工廠方法模式解決了這個問題。