我记得之前看过一个文章,说类的方法设计按照“被”的原则,例如:人可以喂动物,喂的方法应该在人的类里,但是正确的设计方法应该是动物被喂,这个喂的方法在动物的类中。
我现在找不到这个文章了,大约记得是这么说的,文章中还说是哪个老师在讲java基础的时候说过的,我查了不是老罗,也不是马士兵,不是韩顺平,不是张孝祥。
很想知道其中的道理,看了封闭原则也没说太清楚这个问题,这个问题应该在类的设计中是非常重要的!
第一次提问,希望java大哥看到能够帮我回复一下,万分感谢。
你说的“被”原则应该是高内聚,低耦合,也就是动物相关的方法,不要牵涉到别的类
除了这个原则,还有开放封闭原则,依赖倒置原则,面向接口而不是面向实现,用聚合代替继承等等。
那你真要做设计的话,那肯定人和动物的行为都是分开的,再抽象的话就是养殖者和被养殖者,人实现养殖者,动物实现被养殖者,而两个抽象中分别有各自对应的函数,当它们被各自实现的时候,也就确定了各自的所属类型,
这样设计的好处在于,其实你并没有改变原来动物和人的行为,你只是给它们增加了养殖这个抽象概念,你甚至还可以创建一个动物代理类去注入动物实现被养殖者,用它来控制动物的行为,这样动物就完全不用改了,其实设计
这个东西我觉得没必要过度去追求,你设计过度之后会发现代码写起来很麻烦,而且别人看你代码的时候也要先理解你的设计,适度即可多练练。