例:最基本的資料訪問程式
class
user
public string getname()
}class
sqlserveruser
public user getuser
(int id)
}public
class
main
}
sqlserveruser su=new sqlserveruser()使得su這個物件被框在sql server上,不能換資料庫,可以用工廠方法模式,定義乙個用於建立物件的介面,讓子類決定例項化哪乙個類。
用工廠方法模式改進:
class
user
public string getname()
}inte***ce
iuser
class
sqlserveruser
implements
iuser
@override
public user getuser
(int id)
}class
accessuser
implements
iuser
@override
public user getuser
(int id)
}inte***ce
ifactory
class
sqlserve***ctory
implements
ifactory
}class
accessfactory
implements
ifactory
}public
class
main
}
抽象工廠模式改進,增加了關於部門表的處理。
class
user
public string getname()
}inte***ce
iuser
class
sqlserveruser
implements
iuser
@override
public user getuser
(int id)
}class
accessuser
implements
iuser
@override
public user getuser
(int id)
}class
department
public
void
setid
(int id)
public string getdeptname()
public
void
setdeptname
(string deptname)
}inte***ce
idepartment
class
sqlserverdepartment
implements
idepartment
@override
public department getdepartment
(int id)
}class
accessdepartment
implements
idepartment
@override
public department getdepartment
(int id)
}inte***ce
ifactory
class
sqlserve***ctory
implements
ifactory
@override
public idepartment createdepartment()
}class
accessfactory
implements
ifactory
@override
public idepartment createdepartment()
}public
class
main
}
用簡單工廠來改進抽象工廠:去除ifactory、sqlserve***ctory、accessfactory三個工廠類,用dataaccess類代替,用乙個簡單工廠模式來實現。
class
user
public string getname()
}inte***ce
iuser
class
sqlserveruser
implements
iuser
@override
public user getuser
(int id)
}class
accessuser
implements
iuser
@override
public user getuser
(int id)
}class
department
public
void
setid
(int id)
public string getdeptname()
public
void
setdeptname
(string deptname)
}inte***ce
idepartment
class
sqlserverdepartment
implements
idepartment
@override
public department getdepartment
(int id)
}class
accessdepartment
implements
idepartment
@override
public department getdepartment
(int id)
}class
dataaccess
return result;
}public
static idepartment createdepartment()
return result;}}
public
class
main
}
設計模式學習筆記(六) 抽象工廠模式
在了解抽象工廠模式之前,首先來了解一下兩個術語 產品等級結構也就是產品的繼承結構,例如乙個抽象類是電視機,子類有不同品牌的電視機,比如海爾電視機,海信電視機,tcl電視機,而抽象電視機與具體品牌的電視機之間構成了乙個產品等級結構,抽象電視機是父類,而具體品牌的電視機是子類。產品族是指由乙個同乙個工廠...
設計模式 工廠模式 抽象工廠模式
建立物件時不會對客戶暴露建立邏輯,並且通過使用乙個共同的介面來指向建立的物件。sept1 建立乙個公共介面,將要對外開放的方法在這裡定義。sept2 建立實現介面的類,用即實現對外開放的類的方法 sept3 建立工廠,提供乙個get方法,這個方法提供返回實現類的物件 建立選擇 sept4 使用,建立...
抽象工廠模式 常用設計模式 抽象工廠模式
提供乙個建立一系列相關或相互依賴物件的介面,而無需指定它們具體的類。在工廠方法模式中,我們的具體建立者每次使用都只能建立乙個同型別的物件,假如我們現在需要的是多個不同型別的物件,工廠方法就滿足不了需求了。這時我們可以把多個工廠方法組合到乙個類,這就是抽象工廠模式,它就是專門用來建立多個產品,也可以說...