码迷,mamicode.com
首页 > 其他好文 > 详细

浅谈面向对象中类、抽象类、接口划分

时间:2020-12-28 11:02:25      阅读:0      评论:0      收藏:0      [点我收藏+]

标签:文件的   是什么   重用   扩展性   改善   架构   集中   抽象方法   相同   

基本概念

面向对象编程(Object Oriented Programming,OOP)是一种编程架构,重塑了编程方式。
OOP三个主要目标:重用性、灵活性和扩展性。
OOP=对象+类+继承+多态+消息,其中核心概念是类和对象。

类、抽象类、接口划分

类是面向对象编程过程中必需会用到的,但是抽象类与接口却不一定。很多时候或者很多开发人员对抽象类与接口的选取或理解上有些疑惑,因为接口中能做的东西抽象类基本都能完成,那为什么还要去多写一个接口文件再写一个类去实现呢?虽然接口可以多重继承,但遇到的也可以拆分或组合,能少写一个文件的事却整的这么麻烦呢?还有在类中方法明明没有使用到对象的属性为什么不使用静态方法呢?使用静态方法内外调用方便,为什么还要写成非静态然后不得不去创建一个对象调用呢?

类似的问题会非常多,实际上都是为了定义后续开发维护的规范。我总结的是开发时所能看到的动作与功能所适应的对象范围,将决定你开发代码共用和规范的精华。

类主要是定义某个对象的具体动作与功能,是对象处理的最小单元。
类比较适合对象的独有动作与功能处理的抽取或实现,相同的动作与功能交给基类或其它类处理或实现。
类在实际开发过程中,很少是独立完成一些功能或动作的,一般需要借助其它处理类来完成,在这过程中需要类具备对象调用的特点,改善其它处理类的通用性。

抽象类

抽象类主要是定义某些对象集的基本动作与功能集,其中有部分动作与细节需要子类完成。
抽象类比较适合同类别的对象集抽取,把相同的处理方法或功能抽取出来,能实现的就实现,不能实现的给定义。
抽象类可理解为纵向串联某些对象集,偏集中完成整体功能,适用同类别的对象集。
比如商品处理,商品有不种类,但都有:库存、名字、规格、生产日期、生产地、价格等,和库存处理、规格处理等,抽象一个商品基类实现商品的基本动作与功能,提供商品子类需要完成的抽象方法:损耗处理、检验处理、销售处理等。所有子商品只需要完成抽象方法即可共享商品处理的基本动作与功能。

接口

接口主要是定义某些动作或功能的基本方法结构集,并不明确哪些对象。
接口比较适合有匹配的处理包,有点像黑匣子,你不需要知道内部处理了什么,只需实现对外提供接口方法,然后直接调用处理包就可以获得想要的结果。
接口可理解为横向穿插某些对象集,偏集中完成穿插部分的功能与细节,适用相同动作或功能的对象集。
比如支付处理,支付一般都需要对接三方支付接口,基本上所有的三方支付接口都会提供:创建支付订单、取消支付、支付回调、查询订单;在这里并不需要知道支付的是什么订单,所有的订单只需要实现支付接口方法:获取订单号、获取支付金额、获取支付商品简称、获取支付超时时间、更新支付状态;支付处理包只需要实现具体的:创建支付订单、取消支付、支付回调、查询订单。如果哪里需要支付,直接实现支付接口基本方法,然后调用支付处理包就可以快速完成支付功能。

浅谈面向对象中类、抽象类、接口划分

标签:文件的   是什么   重用   扩展性   改善   架构   集中   抽象方法   相同   

原文地址:https://blog.51cto.com/php2012web/2568661

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!