面向对象设计把握一个重要的经验:谁拥有数据,谁就是对外提供操作这些数据的方法。
下面我们来分析几个例子来深入的理解下这句话:
1:列车司机紧急刹车。 这里列车拥有刹车方法,因为人是没有那么大的力气去把车个阻挡下来的,是车子自己去熄火,刹车停下来的,人只不过给了车子一个停下来的指令。(熄火,刹车这些数据是车子拥有的)
2:人在黑板上面画圆。画这个方法是圆自己拥有的。因为画圆需要圆点与半径,那么这些数据是圆本身拥有的,人只不过给了一个画圆的请求,圆自己把自己画出来。(圆点和半径是圆拥有的)
3:售货员统计收获小票的金额。统计金额这个方法谁小票拥有的,因为每个金额的数值是小票所知道,人是不知道的,人发请求,小票统计。(金额数据时小票拥有的)
4:你把门关上了。关这个方法是门的,因为关门需要扭转转轴,旋转角度,这些数据是门的,你只是给门发关门指令(转轴 是门拥有的)
5:两块石头磨成一把石刀,石刀可以砍树,砍成木材,木材做成椅子。
这里要有面向对象的方式来设计如下情景:第一句话,两块石头磨成一把石刀 石头变成石刀,变石刀这个方法若是给石头自己的话,那么石刀产生了,石头自己就消失了,这个不好!那么就要使用工厂了!现在有个石刀工厂,接收两块石头,生产一个石刀!
石刀=石刀工厂.创建石刀(石头,石头);
第二句话,
石刀可以砍树,砍成木材,树自己吧自己变成木材是不可能的 所以树需要被石刀砍那么可以这么写
木材=石刀.砍(树);
第三句话,木材做成椅子,同理木材把自己变成椅子之后自己就消失了所以使用工厂。
椅子=椅子工厂.创建椅子(木材);