黑马程序员技术交流社区

标题: 对交通灯管理系统中面向对象思想面试题的一些疑问。 [打印本页]

作者: 柴亚飞    时间: 2011-11-10 22:35
标题: 对交通灯管理系统中面向对象思想面试题的一些疑问。
两个石头磨成石刀。
这个句子 张老师的实现是 StoneKnife stoneKnife= stoneKnifeFactory.create(Stonestone1,Stone stone2)。张老师在这个句子的实现中多增加了一个中间层,stoneKnifeFactory。我有些疑问。这个中间类的作用不就是构造器的作用吗?用一个构造方法是不是更好呢?StoneKnife stone = StoneKnife(Stone s1,Stone s2)。这样可以省略了一个类。是不是更符合题意呢?

作者: 黄健    时间: 2011-11-10 23:25
个人认为还是工厂比较好,stoneKnifeFactory.create(Stonestone1,Stone stone2)中体现了题目中的三点
接受原材料:石头
进行加工:磨
返回成品:石刀
作者: 柴亚飞    时间: 2011-11-11 00:30
在java中,new本身就是生成对象的意思。
接受原材料:stone
进行加工:new(代替stoneKnifeFactory.create)
返回成品:stoneknife
如果按老师的写法,要创建3个类。
按我的写法,写两个类。
在题目“两个石头磨成石刀”这句话中,石头和石刀是两个名词,两个名词对应两个类,一个动词对应一个构造方法,我想用最简单的思维去应对现实中的问题。我这么写是按这个规则来的。
如果写成了3个类,是不是说每个对应的动词都由必要对应一个产生这个动作的场所呢?
       按这个规则的话,第二句,“石刀砍树”就可以写成 material mtl = materialfactory.creat(stoneknife ,tree);这样的话,这句话就增加了两个对象。实际上完整的语句就成了“树被石刀在工厂里加工成了材料”。这算不算换了题目?
      
作者: 柴亚飞    时间: 2011-11-11 00:33
石刀砍树。
老师的实现好像是 material mtl = stoneknife.cut(tree);




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2