如果只是为了复用公共方法,那在类A里的方法全部设置为static好了,直接用。
没有任何关系的类,不要使用继承,可以了解下里氏替换。
类A包含所有公共方法也不对,没做到接口隔离。
再说一下你想了解的
当然你乐意用哪种就用哪种
里氏替换 那个我明白了。 能稍微再详细的说一下, 接口隔离么,类A包含的都是公共方法,要怎么做接口隔离?
@百鸟朝凤: 公共方法肯定也能分类的,不同公共方法放在不同的类里面,不暴露用户不能用或不需要的接口。
@一罪: 我这些公共的方法,假如是 1 2 3 ,, 一个类需要用方法 1 和 2 , 另一个类需要用方法 2 3 , 还有一个类需要用方法 1 和 3 ,, 那要这样的话,是不是我的一个方法就要放到一个类里面?
@百鸟朝凤: 分类是从方法本身的性质来分的,而不是为使用方去分,比如有数学计算相关的公共方法,文件操作的公共方法,不能因为类A使用随机数方法作为文件名去创建文件,就把这两个公共方法放在一个类里。
我是觉得公共方法应该都是不需要实例化对象,组合和继承都不怎么好。
@一罪: 那 例如, 数学计算的公共类里面有3个方法,我只用到了一个, 那这算是暴露了用户不需要的接口么,是不是也没有做到接口隔离? 。。。不是抬杠额。。。是没想明白这块的东西
@百鸟朝凤: 类做的是抽象,因此你要看到接口的本质是什么。举个例子,比如随机数计算就有很多接口,用户虽然只需要用其中一个,但并不算违背接口隔离,因为用户变更随机数计算方法是很常见的,但是你在这个类里暴露三角函数计算就不对了,因为用户可能误用三角函数来当随机值,导致业务异常。当然数学计算的接口都可以放到一个类里也无所谓,从高层抽象来说,大家都是数学相关的。在原则和实际之间还是需要做一定的权衡,类划分太细就会导致类太多,增加程序员的负担。
@一罪: 哦哦,大概时明白了
区别就是:你想用哪种.
我习惯用第二种。。我现在想知道这两种除了写法之外,有什么区别。例如在内存开销啊,多线程下,哪种安全啊,执行效率?
@百鸟朝凤: 他们2个一点关系都没有.
这2个场景完全是不相干的2个事情.
继承的特点是属于,说白了就是归类,把有关联性的类的方法,集中到一起;
比如,项目中有一个关于汽车的父类,那么这里面相关的方法,就是汽车的子类公共方法,而别的类,比如食品类,则不需要用到,食品类就有自己的父类。
而公共类是没有属于关系的,这个类,跟别的类没有关联性方法;
公共类可以写在本项目中,可以写到别的类库,甚至可以写成接口,给别的项目或者类调用。
如果你的项目很大,一直往公共类里面加方法,这个文件会越来越大,造成阅读和修改的困扰;
如果你的项目不大,可以不用细分,随便怎么写都行。
是不是小点的项目中,一般都是用不到继承和接口这类的东西? 我写代码就没用到过呢,?
@百鸟朝凤: 不是用不到,再小也可以用;你可以自己去熟悉了解,你不用我猜是因为你自己不很了解,然后平时接触的项目正好没用到,甚至用到了你也没注意,所以没去用
都可以,但是肯定有一种方式比另一种方式更合理。如果从业务上讲有继承关系那么就用继承,否则用聚合更好