为什么obsrever定义成了接口,但是subject定义成了父类?

来源:2-2 学习观察者模式通用代码

慕移动6842083

2018-06-17 17:34

为什么obsrever定义成了接口,但是subject定义成了父类?

写回答 关注

2回答

  • 慕粉1149573729
    2018-06-19 16:50:37

    接口和抽象类都是所谓的代码复用时使用。

    在使用时,要优先注意继承和接口概念,所有子类是一类事物(有兄弟关系)时,才应该是继承关系,不是一类事物就不要继承改用接口比较好;

    当不符合继承条件时,使用接口,接口可以理解为标准,只定义大致方向,不论具体实现的时候使用;

    当符合继承条件时,且你至少有一个方法是具体实现的时候,即已知时,可以考虑使用抽象类;

    我个人理解是,接口更像是人为定义一系列的行为,是一种赋予的感觉;父类(抽象类)是人为抽取共性,是一种提炼的感觉。

    至于优先级,都是看具体情况的,不过接口总体来说是比继承要灵活,毕竟是多实现、单继承。

    当然还有接口和继承都用的情况,这能实现更多变的情况。

    多写项目,遇到代码重复的时候,就多想想,慢慢就懂得接口和继承的好处和运用了。


    慕粉1149...

    那个抽象类,按定义,应该说至少有一个抽象方法才对

    2018-06-19 16:52:19

    共 1 条回复 >

  • 慕粉1149573729
    2018-06-19 16:04:24

    subject里面的方法是目标对象通用的,同时也是清楚的,所以定义成父类,则其具体目标对象就拥有了所有通用方法;

    obsrever则是提供一个标准行为updata,是未实现方法,其具体实现方法需要根据具体的观察者行为才能定义,所以应该为接口;

    慕移动684...

    感谢!我感觉什么时候用接口,什么时候用抽象类,有点迷糊了,接口还是抽象类优先呢?

    2018-06-19 16:05:32

    共 1 条回复 >

观察者模式

解决发布/订阅问题的观察者模式,以及何时使用观察者模式

55289 学习 · 36 问题

查看课程

相似问题