在寫這篇文章之前,xxx已經寫過了幾篇關於改工廠方法模式主題的文章,想要了解的朋友可以去翻一下之前的文章
一、概述
定義一個用於創立物件的介面,讓子類去決定例項化哪個類。工廠方法將一個類的例項化延遲至其子類。
二、適用性
1.當一個類不知道它所必須創立的物件的類的時候。
2.當一個類希望由其子類來指定它所創立的物件的時候。
3.當類將創立物件的職責委託給多個幫助子類的某一個,並且你希望將哪個幫助子類是代理者這一資訊區域性化的時候。
三、參與者
1.Product:定義工廠方法所創立的物件的介面。
2.ConcreteProduct:實現Product介面。
3.Creator:宣告工廠方法,該方法返回一個Product型別的物件。Creator也可以定義一個工廠方法的預設實現,它返回一個預設的ConcreteProduct物件。
4.ConcreteCreator:重定義工廠方法以返回一個ConcreteProduct例項。
四、類圖
五、示例
Product
package cn.lynn.factorymethod;
public interface IWork {
public void doWork();
}
ConcreteProduct
package cn.lynn.factorymethod;
public class ManagerWork implements IWork {
@Override
public void doWork() {
System.out.println("經理審批流程!");
}
}
package cn.lynn.factorymethod;
public class EmployeeWork implements IWork {
@Override
public void doWork() {
System.out.println("員工處理事件!");
}
}
愛心是一片照射在冬日的陽光,使貧病交迫的人感到人間的溫暖;愛心是一泓出現在沙漠裡的泉水,使瀕臨絕境的人重新看到生活的希望;愛心是一首飄蕩在夜空的歌謠,使孤苦無依的人獲得心靈的慰藉。
Creator
package cn.lynn.factorymethod;
public interface IWorkFactory {
public IWork getWork();
}
ConcreteCreator
package cn.lynn.factorymethod;
public class ManagerWorkFactory implements IWorkFactory {
@Override
public IWork getWork() {
return new ManagerWork();
}
}
package cn.lynn.factorymethod;
public class EmployeeWorkFactory implements IWorkFactory {
@Override
public IWork getWork() {
return new EmployeeWork();
}
}
Test
package cn.lynn.factorymethod;
public class Test {
public static void main(String[] args) {
IWorkFactory employeeWorkFactory = new EmployeeWorkFactory();
employeeWorkFactory.getWork().doWork();
IWorkFactory managerWorkFactory = new ManagerWorkFactory();
managerWorkFactory.getWork().doWork();
}
}
Result
員工處理事件!
經理審批流程!
文章結束給大家分享下程式設計師的一些笑話語錄: 程式語言綜述
CLIPPER 程式設計師不去真的獵捕大象,他們只是購買大象部分的庫然後花幾年的時間試圖綜合它們。
DBASE 程式設計師只在夜間獵捕大象,因為那時沒人會注意到他們還在使用石弓。
FOXPRO 程式設計師開始使用更新更好的步槍,這使他們花掉比實際狩獵更多的時間學習新的射擊技術。
C 程式設計師拒絕直接購買步槍,寧可帶著鋼管和一個移動式機器車間到非洲,意欲從零開始造一枝完美的步槍。
PARADOX 程式設計師去非洲時帶著好萊塢關於獵捕大象的電影劇本,他們認為照劇本行事就會逮到一頭大象。
ACCESS 程式設計師在沒有任何獵象經驗的經驗下就出發了,他們穿著華麗的獵裝、帶著全部裝備,用漂亮的望遠鏡找到了大象,然後發覺忘了帶扳機。
RBASE 程式設計師比大象還要稀少,事實上,如果一頭大象看到了一個RBASE程式設計師,對他是個幸運日。
VISUAL ACCESS 程式設計師裝上子彈、舉起步槍、瞄準大象,這使大象感到可笑,究竟誰逃跑。他們無法抓住大象,因為由於他們對多重控制的偏愛,他們的吉普車有太多的方向盤因而無法駕駛。
ADA、APL和FORTRAN 程式設計師與聖誕老人和仙女一樣是虛構的。
COBOL 程式設計師對和自己一樣瀕臨滅絕的大象寄予了深切的同情。
---------------------------------
原創文章 By
工廠方法和模式
---------------------------------