我一直在開發用PHP編寫的PBBG(遊戲)& MySQL 7個月。該項目即將完成並可能即將發佈,但我擔心一些問題。我正確使用OOP嗎?
這是我第一次編程一個真正的項目,也是我第一次使用OOP。我的代碼現在有大約25k行,這裏是我的問題:
我是否正確使用OOP?我相信我是過度調用類構造。我有大約20個不同的課程,有時他們需要彼此。下面是一個示例代碼,我如何使用OOP(只是一個草圖,可能無法正常工作)
class A {
public $b;
public $c;
public function __construct(){
$b = new B();
$c = new C();
}
public function sampleA(){
//some stuff that depends $c->sampleC
}
}
class B {
public $c;
public function __construct(){
$c = new C();
}
public function sampleB($id){
return $this->c->sampleC($id);
}
}
class C {
public function sampleC(){
}
}
然後我會使用:
$a = new A();
$b = new B();
$c = new C();
$whatIWant = $a->sampleA($b->sampleB($c->sampleC()));
雖然我可以只
$a = new A();
$whatIWant = $a->sampleA($a->b->sampleB($a->c->sampleC()));
在這個簡單的例子中,這看起來沒有任何意義,但是我的腳本有超過200個不同的構造函數調用,我想這會減慢並超載我的服務器。
也許我的例子wasnt很清楚,所以我把我的XDebug探查結果的打印:
Print http://img820.imageshack.us/img820/2166/possiblensting.jpg
是單身我需要什麼?我試過用singleton這樣一個簡單的例子,但我有相同的結果(每個類超過1個構造)。
也許我需要擴展這些類並使用父類的構造函數?但是,20個不同的階層怎麼可能有時是獨立的,有時是相互依存的?
或者我正在使用它正確的方式(我不這麼認爲)
一個單例只不過是一個[hackish]方法來使用一個穩定的標識符來引用一個特定的實例。也許「依賴注入」這個詞是否值得探索? – 2012-09-03 19:21:14
25K LOC,只有20班,每班1250 LOC。即使其中一半是NCLOC,這也意味着你的課程太大了,你很可能沒有遵循SRP。 – Gordon