我一直在开发用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