------- android培训、java培训、期待与您交流! ----------
1,张老师在一开始为了提高同学们的面向对象的设计思维能力,便引出了两个例子:
例一:两块石头磨成一把石刀,石刀可以砍树,砍成木材,木材做成椅子
张老师的是这样设计的:
首先有这样几个类
Stone//石头
StoneKnife//石刀,这个类里面有一个public Material cut(Tree tree)方法
Material//材料
Tree//树
Chair//椅子
然后张老师想到石头磨出刀后石头自己就应该没了,材料做成椅子后也应该没了,张老师觉得这样的思想如果要设计到对象所对应的类里面就比较难以实现,所以就又设计了两个工厂类
KnifeFactory//这个类里面有个createKnife(Stone stone1,Stone stone2)方法
ChairFactory//这个类里面有个makeChair(Material material)方法
个人觉得张老师的设计这两个工厂类是没有必要的,类多了就过于复杂了,况且他这样设计似乎也没有达到让对象自己把自己变没了的目的,下面我给出我的设计,个人觉得比张老师的要好点,也许我的还没有他设计的好,仅供交流,呵呵……
例二:球从一根绳子的一端移动到了另一端
张老师是这样设计 的
我是这样设计的
我觉得我和张老师的不同就在于他把绳子设计在了一个二维空间里,而我则是把绳子设计在了一个一维空间里
下面是我自己模拟的这个交通灯系统