我现在知道类 对象 接口 但我不知道一个项目应该怎么构架类 行为 属性请问我应该看那方面的书呀~~ 我现在知道类 对象 接口 但我不知道一个项目应该怎么构架类 行为 属性请问我应该看那方面的书呀~~如题~~很是迷惑~ 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 《深入PHP面向对象,模式与实践》先看十遍 程序员的读书历程:语言入门 —>语言应用实践 —>语言高阶编程 —>语言的科学与艺术 —>编程之美 —>编程之道 —>编程之禅 —>颈椎病康复指南 帮你写了个例子,看注释应该会很清晰了<?php//老师class teacher{ //老师会画方法,给指定的对象($object)画上一个形状($shape) public function Draw($object,$shape){ $object->contents[]=$shape; }}//黑板class blackBoard{ public $contents=array(); //黑板上画的东西}//纸class paper{ public $content=array(); //纸上画的东西}$teacher=new teacher(); //老师出场$blackBoard=new blackBoard(); //实例化一块黑板$paper=new paper(); //实例化一张纸$teacher->Draw($blackBoard,'圆'); //老师先在黑板上画个圆$teacher->Draw($blackBoard,'三角'); //再画个三角$teacher->Draw($paper,'圆'); //接着在纸上画个圆$teacher->Draw($paper,'三角'); //接着在纸上画了个三角$teacher->Draw($paper,'正方形'); //接着画个正方形print_r($paper->contents); //看看纸上都画了些什么print_r($blackBoard->contents); //看看黑板上画了些什么 4楼的书目前不推荐,因为那个不是面向对象入门书. 大部分OO分析/设计/编程的书是用java/c++等写成,php的有,但是不推荐. 所以,去找java的书你7楼的问题, "请问 画(圆)这个行为 在那个写 应该是人,还是黑板呀 还是圆"我的回答是: 都可以因为"画"这个动作,它们3方都有参与,而且都不可缺. 在任何一方实现都是可以的写法. 这个是你在设计阶段要决定的,而且也有可能在重构时改变. 放在哪里能让你的设计更容易理解,更简单等等...就更好同时, 应该在设计时保持一致性, 比如一般不应该"老师"里也有一个"画","圆"里也有一个"被画",这样让人疑惑,而且很可能是重复的代码, 同样的, 如果"圆"里有"被画","正方形"里也应该有个"被画",这时你可以将这个"被画"抽象到他们的抽象父类"形状"里去....当你面对不同的需求的时候,你会发现不同的设计会带来不同的感觉和后果, 所以,相比于这样比较"虚"的例子,你不如去直接写一个小小的实际的项目,(比如一个小bbs?)那样更容易让需求具体化,可以写出实际的代码,也就能更好地体会. 关于本地网页浏览器无法打开的问题!求救! 一段PHP代码结果问题 求一个简单的sql查询语句 用ab 对数据库进行压力测试,如何不让web服务器成为瓶颈? php连接sybase失败 关于ecshop IIS 伪静态 一个正则的问题 php5异常处理的不明白的地方 请问一下,在WIN2K服务器下有软件能支持PHP的解析吗? php正则表达式如何获取内容中的视频地址和标题??急 数据库编码GBK,页面是UTF8 请问下列代码的问题,关于imagettftext的字体颜色问题。
<?php
//老师
class teacher{
//老师会画方法,给指定的对象($object)画上一个形状($shape)
public function Draw($object,$shape){
$object->contents[]=$shape;
}
}
//黑板
class blackBoard{
public $contents=array(); //黑板上画的东西
}
//纸
class paper{
public $content=array(); //纸上画的东西
}$teacher=new teacher(); //老师出场
$blackBoard=new blackBoard(); //实例化一块黑板
$paper=new paper(); //实例化一张纸$teacher->Draw($blackBoard,'圆'); //老师先在黑板上画个圆
$teacher->Draw($blackBoard,'三角'); //再画个三角
$teacher->Draw($paper,'圆'); //接着在纸上画个圆
$teacher->Draw($paper,'三角'); //接着在纸上画了个三角
$teacher->Draw($paper,'正方形'); //接着画个正方形print_r($paper->contents); //看看纸上都画了些什么
print_r($blackBoard->contents); //看看黑板上画了些什么
我的回答是: 都可以
因为"画"这个动作,它们3方都有参与,而且都不可缺. 在任何一方实现都是可以的写法.
这个是你在设计阶段要决定的,而且也有可能在重构时改变.
放在哪里能让你的设计更容易理解,更简单等等...就更好同时, 应该在设计时保持一致性, 比如一般不应该"老师"里也有一个"画","圆"里也有一个"被画",
这样让人疑惑,而且很可能是重复的代码, 同样的, 如果"圆"里有"被画","正方形"里也应该有个"被画",
这时你可以将这个"被画"抽象到他们的抽象父类"形状"里去....当你面对不同的需求的时候,你会发现不同的设计会带来不同的感觉和后果,
所以,相比于这样比较"虚"的例子,你不如去直接写一个小小的实际的项目,(比如一个小bbs?)
那样更容易让需求具体化,可以写出实际的代码,也就能更好地体会.