为什么obsrever定义成了接口,但是subject定义成了父类?
接口和抽象类都是所谓的代码复用时使用。
在使用时,要优先注意继承和接口概念,所有子类是一类事物(有兄弟关系)时,才应该是继承关系,不是一类事物就不要继承改用接口比较好;
当不符合继承条件时,使用接口,接口可以理解为标准,只定义大致方向,不论具体实现的时候使用;
当符合继承条件时,且你至少有一个方法是具体实现的时候,即已知时,可以考虑使用抽象类;
我个人理解是,接口更像是人为定义一系列的行为,是一种赋予的感觉;父类(抽象类)是人为抽取共性,是一种提炼的感觉。
至于优先级,都是看具体情况的,不过接口总体来说是比继承要灵活,毕竟是多实现、单继承。
当然还有接口和继承都用的情况,这能实现更多变的情况。
多写项目,遇到代码重复的时候,就多想想,慢慢就懂得接口和继承的好处和运用了。
subject里面的方法是目标对象通用的,同时也是清楚的,所以定义成父类,则其具体目标对象就拥有了所有通用方法;
obsrever则是提供一个标准行为updata,是未实现方法,其具体实现方法需要根据具体的观察者行为才能定义,所以应该为接口;