abstract 和interface

初学者经常会把 abstract 和 interface 的作用混淆,这里有一篇 abstract 和 interface 的文章,Java版的,十分通俗易懂,不懂java的也很容易看懂 深入理解Java的接口和抽象类

一句话总结就是:abstract起到模板的作用,可以有属性和方法,interface起到规范方法行为的作用,只能有抽象方法存在,两者都不可以实例化,abstract单继承(视乎语言),interface可以多实现。

下面我说一下interface在我项目中的实现。

我把有列表显示和详情显示的信息抽象成实体(entity),实体列表和实体详情。以用户信息为例(json格式): 2018-05-19_111139.png ps:这里推荐一个 chrome 插件:JSON-handler,十分好用 项目的其他实体类型还有评论,帖子等等。每一个信息对象,都是一个实体。在项目的 cache 层获取实体列表信息或者详细信息,方法都是类似的,可以把这个概念抽象出一层变成一个 interface(如果实体类型比较多,可以用 trait 封装成复用的方法,最近是个小项目,所以就用 interface 了)。

    /**
     * EntityCache实体接口
     */
    Interface EntityCache {
        /**
         * [entityDetail 根据主键获取实体详情缓存]
         * @param  [type] $id [description]
         * @return [type]     [description]
         */
        public function entityDetail($id);

        /**
         * [entityList 根据主键批量获取实体缓存信息]
         * @param  [Array]  $ids [description]
         * @return [type]      [description]
         */
        public function entityList(Array $ids);

        /**
         * [cacheEntityList 单个或者批量缓存实体信息]
         * @param  [Array] $data [二维实体数组]
         * @return [type]       [description]
         */
        public function cacheEntityList(Array &$data);
    }

这3个抽象方法规定了那些实现了 EntityCache Interface 的类的行为,可以使得团队代码更加规范。

其实在 model 层也可以做这么一个 interface

    /**
     * EntityModule实体接口
     */
    Interface EntityModule {
        /**
         * [entityDetail 根据主键获取实体详情]
         * @return [type] [description]
         */
        public function entityDetail($id);

        /**
         * [entityList 根据主键获取实体列表]
         * @return [type] [description]
         */
        public function entityList(Array $ids);

    }

具体规范视乎团队和业务逻辑而定。 总结:相当一部分phper的编码风格都是非常粗放狂野的,同一个项目中的代码逻辑可能都有几处不同。在养成坏习惯之前意识到规范统一的重要性还是很有必要的,不然以后项目重构的时候真的就火葬场了。

转载于:https://my.oschina.net/u/3387961/blog/1844464

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值