A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 Teemo_Mann 于 2014-4-17 22:55 编辑

看视频有个疑问
两个石头做成一把石斧,张老师设计的方式是用一个StoneKnifeFactory.newCreate("stone")的工厂模式,但是这里能不能用一个StoneKnife类继承Stone类来设计呢,毕竟石斧和石头也有继承关系吗,求指教

评分

参与人数 1黑马币 +1 收起 理由
枫儿 + 1 神马都是浮云

查看全部评分

4 个回复

倒序浏览
knife不是小刀么
回复 使用道具 举报
我觉得张老师的更好,做斧头的材料不限于石头一种。
虽然石头和石斧有相关关系,但是设计继承关系时,还是应该考虑多一些。
我最近刚看到一篇文章提到设计继承关系的技巧的建议。是这样的
1、将公共操作和成员变量定义在超类;
2、尽量少使用protected修饰符;
3、使用继承实现“is-a”关系;
4、除非所有继承的方法都有意义,否则不要使用继承;
5、在覆盖方法的时候,不要改变预期的行为;
6、使用多态,则非类型信息。

对于第3点,石斧是一块石头,感觉是有些不对劲吧,石斧做为斧头的子类或许更好一些。

评分

参与人数 1技术分 +1 收起 理由
SyouRai_Tsk + 1

查看全部评分

回复 使用道具 举报
呆呆沙师妹 发表于 2014-4-16 14:27
我觉得张老师的更好,做斧头的材料不限于石头一种。
虽然石头和石斧有相关关系,但是设计继承关系时,还是 ...

受教了 is-a关系确实牵强了一点,但是如果这题是石头可以做成石碑,石头可以做成石斧,石头可以做成....我觉得应该是is-a关系了,你的观点呢
回复 使用道具 举报
Teemo_Mann 发表于 2014-4-16 19:04
受教了 is-a关系确实牵强了一点,但是如果这题是石头可以做成石碑,石头可以做成石斧,石头可以做成....我觉 ...

我对继承关系的理解也不是很到位。但我觉得,父类应是子类共性的抽象,石碑、石斧等它们有个共同特点是用石头制成(抱歉,我想象力有点贫乏。。。),就这样确立继承关系是否有点不合适?
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马