5 回答

喵喵時(shí)光機(jī)
TA貢獻(xiàn)1846條經(jīng)驗(yàn) 獲得超7個(gè)贊
工廠方法去獲取對(duì)象,在要換個(gè)實(shí)例化的對(duì)象時(shí)只要改工廠類(lèi)里new的一處就好了,如果不是工廠 就要每個(gè)new都要改。

浮云間
TA貢獻(xiàn)1829條經(jīng)驗(yàn) 獲得超4個(gè)贊
直接上一個(gè)簡(jiǎn)單工廠方法案例看一下哈,通過(guò)代碼解釋
補(bǔ)充一下,題主問(wèn)題打的標(biāo)簽是java,以下是php代碼,天下代碼是一家
// 定義一個(gè)接口
interface Person
{
public function getWork();
}
// 實(shí)現(xiàn)該接口
class Teacher implements Person
{
public function getWork()
{
echo 'Teacher teaching';
}
}
class Student implements Person
{
public function getWork()
{
echo 'Student study';
}
}
// 此處為核心點(diǎn)
class Factory
{
/*
通過(guò)靜態(tài)方法返回生成的指定類(lèi)的對(duì)象
按照我們的理解,實(shí)例化對(duì)象需要 new 類(lèi)名
如 $test = new Test;
$test->方法名();
再實(shí)例化一個(gè):
$test2 = new Test2;
$test2->方法名();
......
實(shí)例化一次就需要再new一次類(lèi)
而通過(guò)此處的簡(jiǎn)單工廠模式,則可以不需要知道具體的類(lèi)名就可以生成對(duì)象
*/
public static function getPerson($work)
{
return new $work;
}
}
$res = Factory::getPerson('Teacher');
$res->getWork();
添加回答
舉報(bào)
0/150
提交
取消