美文网首页
设计原则练习2-通用模块

设计原则练习2-通用模块

作者: 西山薄凉 | 来源:发表于2020-03-29 22:56 被阅读0次

项目背景

我们希望设计开发一个小的框架,能够获取接口调用的各种统计信息,比如,响应时间的最大值(max)、最小值(min)、平均值(avg)、百分位值(percentile)、接口调用次数(count)、频率(tps) 等,并且支持将统计结果以各种显示格式(比如:JSON 格式、网页格式、自定义显示格式等)输出到各种终端(Console 命令行、HTTP 网页、Email、日志文件、自定义输出终端等),以方便查看。

需求分析

对于非业务通用框架的开发,我们在做需求分析的时候,除了功能性需求分析之外,还需要考虑框架的非功能性需求。比如,框架的

  • 易用性、
    易用性听起来更像是一个评判产品的标准。没错,我们在开发这样一个技术框架的时候,也要有产品意识。框架是否易集成、易插拔、跟业务代码是否松耦合、提供的接口是否够灵活等等,都是我们应该花心思去思考和设计的。有的时候,文档写得好坏甚至都有可能决定一个框架是否受欢迎。
  • 性能、
    对于需要集成到业务系统的框架来说,我们不希望框架本身的代码执行效率,对业务系统有太多性能上的影响。对于性能计数器这个框架来说,一方面,我们希望它是低延迟的,也就是说,统计代码不影响或很少影响接口本身的响应时间;另一方面,我们希望框架本身对内存的消耗不能太大。
  • 扩展性、
    这里说的扩展性跟之前讲到的代码的扩展性有点类似,都是指在不修改或尽量少修改代码的情况下添加新的功能。但是这两者也有区别。之前讲到的扩展是从框架代码开发者的角度来说的。这里所说的扩展是从框架使用者的角度来说的,特指使用者可以在不修改框架源码,甚至不拿到框架源码的情况下,为框架扩展新的功能。这就有点类似给框架开发插件。
  • 容错性、
    容错性这一点也非常重要。对于性能计数器框架来说,不能因为框架本身的异常导致接口请求出错。所以,我们要对框架可能存在的各种异常情况都考虑全面,对外暴露的接口抛出的所有运行时、非运行时异常都进行捕获处理。
  • 通用性等
    为了提高框架的复用性,能够灵活应用到各种场景中。框架在设计的时候,要尽可能通用。我们要多去思考一下,除了接口统计这样一个需求,还可以适用到其他哪些场景中,比如是否还可以处理其他事件的统计信息,比如 SQL 请求时间的统计信息、业务统计信息(比如支付成功率)等。

架构设计

对于复杂框架的设计,很多人往往觉得无从下手。今天我们分享了几个小技巧,其中包括:

  • 画产品线框图、
  • 聚焦简单应用场景、
  • 设计实现最小原型、
  • 画系统设计图等。

这些方法的目的都是为了让问题简化、具体、明确,提供一个迭代设计开发的基础,逐步推进。

相关文章

  • 设计原则练习2-通用模块

    项目背景 我们希望设计开发一个小的框架,能够获取接口调用的各种统计信息,比如,响应时间的最大值(max)、最小值(...

  • C++设计模式 Week1 (Boolan) by Im4lis

    1-设计模式简介2-面向对象设计原则面向对象设计的八大原则:1、依赖倒置原则(DIP):稳定的部分不应该依赖于变化...

  • 七个原则2-依赖倒置原则

    七个原则2-依赖倒置原则 定义:高层模块不应该依赖底层模块,二者都应该依赖其抽象 抽象不应该依赖细节,细节应该依赖...

  • Css模块化设计

    (1)css模块化设计原则

  • 模块设计原则

    越底层的模块,应该越稳定,越抽象,越具有高复用度。稳定的最直观表现就是暴漏的API很久都不用变化,隐藏变化因子,避...

  • 项目设计与原理分析

    一、CSS模块化设计 1、设计原则 2、设计方法 二、JS组件设计 1、设计原则 2、设计方法 三、自适应 1、基...

  • 2021-09-12 web设计模式解析与实战(一)

    设计模式 有利于 组织模块 设计沟通 代码质量 五大设计原则: 开闭原则(OCP:open close princ...

  • 架构设计原则

    软件设计原则 GRASP 通用职责分配软件模式 信息专家 为对象分配职责的通用原则 – 把职责分配给拥有足够信息可...

  • 手机开发实战40——手机模块设计1

    模块设计 根据以上设计模式和设计原则,功能模块的划分如下: MMI层模块的组成: 视图-负责界面显示,通常是GUI...

  • 【组件模块化4】CSS模块化设计

    CSS模块化设计 设计原则 设计方法 a、可复用能继承要完整 比如拿到这个设计图,来思考css的模块设计。 可能觉...

网友评论

      本文标题:设计原则练习2-通用模块

      本文链接:https://www.haomeiwen.com/subject/bkvpuhtx.html