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 講白了,就是面向抽象接口編程,每一組對象都實現同一個接口

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();
}
}


比如說我需要一個顯卡驅動和打印機驅動,高檔機和低檔機驅動都不一樣,但我不想用很多switch來選擇,這樣很麻煩,而且擴展更麻煩。那我就定義一個抽象類,將我需要調用的資源全部放在里面,初始化類的時候我們可以先聲明一個
ResFactory factory;
當我們需要使用高檔機的時候就
factory=new HighResFact();
使用低檔機的時候就
factory=new LowResFact();
這樣,就可以很方便的調用自己想調用的對象,而且不用考慮有沒有提供相應方法,在擴展和修改的時候更加方便,因為抽象和實現全部分開了,這也是我們在平常編程當中需要注意的。
---------------------------------------------------------
專注移動開發
Android, Windows Mobile, iPhone, J2ME, BlackBerry, Symbian
posted on 2007-04-26 21:11
TiGERTiAN 閱讀(1159)
評論(0) 編輯 收藏 所屬分類:
Design Patterns