教你用Python自制拼图小游戏
这是组件设计的一个技巧,通过支持多种数据源使得调用更加简单。但是这种设计也有其弊端所在,如果这种兼容性的扩展过多会使得组件的内部逻辑变得复杂,也会使得api变得难于理解,因此,对于兼容性的api扩展要谨慎,不可过量。 3. 兼容不同模式 组件的使用一如既往的优雅、简单,但是现在又有用户提出新的需求了:因为该组件是支持阅读与编辑两种模式的,在使用时,对于他人的笔记是不可编辑的,能否在指定的场景下只支持一种阅读模式? 笔记组件由于内部支持了两种模式,既支持阅读,也支持编辑。因此调用者只想使用一种模式也是合理的。于是,我们继续扩展组件的api: 属性说明类型是否必填默认值mode模式,数组的第一项作为初始模式,该参数不可为空数组array否[ write , read ]
现在,对于只想使用阅读模式的用户,可以这么调用: 这样,一个最简api的笔记组件就搞定了,它的接口非常简单,只需要提供一个data属性,就可以展示出笔记内容,并且可以点击编辑进入书写状态。 一般而言,如果没有更多的需求的话,我们的笔记组件设计到这里也就可以了。**在设计组件时,务必遵循最小化原则,即尽可能少地抛出接口。**因为使用组件的用户可能有很多,一旦组件作者不小心抛出了一个不合理的接口,以后想要修改就几乎不可能了(只能通过标记过时的方法提醒用户,但这种做法往往是无奈之举)。 2. 满足数据获取的多种情况 现在,组件的使用者已经可以通过很简洁的api使用这个笔记组件了,但是现在问题来了:有的组件使用者只拿到了笔记的id,想要通过直接传入id的方式使用组件。 此时,作为组件作者,我们评估了这个需求是合理的,于是,我们扩展了笔记组件的api: 属性说明类型是否必填默认值data笔记对象object否nulldataId笔记对象idstring否null
现在可以通过传入id的方式来使用组件了: 就以我正在使用的笔记app为例,上图展示的笔记的阅读与书写区域,如何将这个区域抽象为一个组件呢?让我们一步一步来分析。 1. 最简api 我们为该组件取个名字(取名很重要),就叫Note吧。不管是在阅读状态还是在编辑状态,该组件都要展示笔记的内容,因为笔记对象应该通过组件的接口传入进来,因为我们为该组件设计第一个api: 属性说明类型是否必填data笔记对象数据object是 接下来,我们简单使用一下这个组件:
为了兼容vue与react的读者,本页面均使用JSX语法 这种架构的优点:
这种架构的缺点: 系统之间的耦合度变高,调用关系变得复杂,难以维护。 SOA架构
在分布式架构下,当部署的服务越来越多,重复的代码就会越来越多,对于容量的评估,小服务资源的浪费等问题比较严重。此时,我们就需要增加一个统一的调度中心来对集群进行实时管理。此时,系统就会演变为SOA(面向服务)的架构。 (编辑:周口站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
