开始我先描述一下我的需求,如何引出抽象类和接口选择的问题。一、需求我们正在开发一个APP,想用工厂模式搭建一个消息通知系统,包括:站内消息、微信模板消息、app消息推送。设计如下:**抽象消息父类**:NoticeAbstrace.php站内消息子类:Msg.phpextendsNoticeAbstract模板消息子类:Wechat.phpextendsNoticeAbstract·Pushsubclass:在PushextendsNoticeAbstract业务流程中,统一调用Notice类中的一个方法,如taskPass;在Notice类中,根据业务模块调用的类型,选择性实例化以上三个子类,调用相同的方法。但是参数不同。通过多个消息通道实现消息的传递。第二,为什么选择使用抽象类而不是接口。这个问题的答案很简单,我没用过接口。于是,查资料,理清两者的区别。如果你也有这种误解,请耐心阅读这篇短文。如有不妥请在评论区留言~3.抽象类和接口的区别1、抽象类定义的方法必须由子类实现。不使用接口;2.接口可以多继承;3、抽象类可以定义成员变量,而接口不能,只能定义为常量灯;(我觉得知道以上三大区别就好了,其他的比如继承等关键字也不同,不用细说了)四、两者如何选择1.如果你的业务流程是固定的,比如我的上面的例子(任务完成,必须发送通知,只是发送通道不同)。然后选择抽象类。由于抽象类定义的方法,子类必须实现它们。2.流程不固定。比如下单通知、会员打赏通知、物流完成通知等,需要在订单完成时调用。然后将这三个通知写成接口。多重继承,然后调用它的方法。如何选择取决于这两点。一旦你理解了这个意思,就开始开发吧。您无需再次阅读书面定义。我认为必须先实现功能,然后才能看到教条式的定义。
