設(shè)計(jì)模式:簡(jiǎn)單工廠模式
來(lái)源:程序員人生 發(fā)布時(shí)間:2015-01-16 08:59:15 閱讀次數(shù):3266次
原文地址:http://leihuang.org/2014/12/03/simple-factory/
Creational 模式
物件的產(chǎn)生需要消耗系統(tǒng)資源,所以如何有效力的產(chǎn)生、管理 與操作物件,1直都是值得討論的課題, Creational 模式即與物件的建立相干,在這個(gè)分類下的模式給出了1些指點(diǎn)原則及設(shè)計(jì)的方向。下面羅列到的全屬于Creational 模式
- Simple Factory 模式
- Abstract Factory 模式
- Builder 模式
- Factory Method 模式
- Prototype 模式
- Singleton 模式
- Registry of Singleton 模式
簡(jiǎn)單工廠模式
Simple Factory模式(又稱Static Factory模式),簡(jiǎn)單工廠通過(guò)靜態(tài)方法生產(chǎn)產(chǎn)品,對(duì)客戶端隱藏產(chǎn)品產(chǎn)生的細(xì)節(jié).
假設(shè)福克斯電影公司(FoxFilmFactory),能夠生產(chǎn)電影(IMovie),而電影有多種,有動(dòng)作片(ActionMovie),有愛(ài)情片(LoveMovie),然后呢,我們觀眾(AudienceClient)其實(shí)不需要知道這些電影具體怎樣制造的,我們只需要讓電影公司放給我們看.
下面用UML類圖來(lái)表示它們之間的關(guān)系

IMovie 接口
package org.leihuang.simplefactory;
public interface IMovie {
public void play() ;
}
ActionMovie類
package org.leihuang.simplefactory;
public class ActionMovie implements IMovie {
@Override
public void play() {
System.out.println("哼哼哈兮!");
}
}
LoveMovie 類
package org.leihuang.simplefactory;
public class LoveMovie implements IMovie{
@Override
public void play() {
System.out.println("愛(ài)老虎油!");
}
}
FoxFilmFactory 類
package org.leihuang.simplefactory;
public class FoxFilmFactory {
public static IMovie createMovie(String name)
throws InstantiationException, IllegalAccessException,
ClassNotFoundException {
return (IMovie) Class.forName(name).newInstance();
}
}
AudienceClient 類
package org.leihuang.simplefactory;
public class AudienceClient {
public static void main(String[] args) throws InstantiationException,
IllegalAccessException, ClassNotFoundException {
FoxFilmFactory.createMovie("org.leihuang.simplefactory.LoveMovie").play() ;
FoxFilmFactory.createMovie("org.leihuang.simplefactory.ActionMovie").play() ;
}
}
從上面我們可以看出,觀眾不需要知道電影具體是怎樣生產(chǎn)的,只需要告知fox我們要看甚么電影,然后fox就會(huì)去給你生產(chǎn),然后你只管看.
2014⑴2-03 14:51:37
Brave,Happy,Thanksgiving !
生活不易,碼農(nóng)辛苦
如果您覺(jué)得本網(wǎng)站對(duì)您的學(xué)習(xí)有所幫助,可以手機(jī)掃描二維碼進(jìn)行捐贈(zèng)