provide an interface for creating families of related or dependent objects without specifying their concrete classes
--Gamma, E., Helm, R., Johnson, R., Vlissides, J. Design Patterns: Elements of Reusable Object-Oriented Software, Boston: Addison-Wesley, 1995, p.87 講白了,就是面向抽象接口編程,每一組對(duì)象都實(shí)現(xiàn)同一個(gè)接口

abstract class ResFactory
{
abstract public DisplayDriver getDispDrvr();
abstract public PrintDriver getPrtDrvr();
}


class LowResFact extends ResFactory
{

public DisplayDriver getDispDrvr()
{
return new LRDD();
}

public PrintDriver getPrtDrvr()
{
return new LRPD();
}
}


class HighResFact extends ResFactory
{

public DisplayDriver getDispDrvr()
{
return new HRDD();
}

public PrintDriver getPrtDrvr()
{
return new HRPD();
}
}


比如說我需要一個(gè)顯卡驅(qū)動(dòng)和打印機(jī)驅(qū)動(dòng),高檔機(jī)和低檔機(jī)驅(qū)動(dòng)都不一樣,但我不想用很多switch來選擇,這樣很麻煩,而且擴(kuò)展更麻煩。那我就定義一個(gè)抽象類,將我需要調(diào)用的資源全部放在里面,初始化類的時(shí)候我們可以先聲明一個(gè)
ResFactory factory;
當(dāng)我們需要使用高檔機(jī)的時(shí)候就
factory=new HighResFact();
使用低檔機(jī)的時(shí)候就
factory=new LowResFact();
這樣,就可以很方便的調(diào)用自己想調(diào)用的對(duì)象,而且不用考慮有沒有提供相應(yīng)方法,在擴(kuò)展和修改的時(shí)候更加方便,因?yàn)槌橄蠛蛯?shí)現(xiàn)全部分開了,這也是我們?cè)谄匠>幊坍?dāng)中需要注意的。
---------------------------------------------------------
專注移動(dòng)開發(fā)
Android, Windows Mobile, iPhone, J2ME, BlackBerry, Symbian
posted on 2007-04-26 21:11
TiGERTiAN 閱讀(1162)
評(píng)論(0) 編輯 收藏 所屬分類:
Design Patterns