1.8 整体局部思想
整体和局部
程序可大可小。任何一个程序都是一段完整的逻辑。程序可大可小,可以是一个函数、一个类、一个模块、一个应用、一个产品,但是无论在哪个维度,它都是一段完整的逻辑。
整体和局部的概念。要想写好一段逻辑,就要明白整体和局部的概念。框架完整了整体,库实现了局部一样,在编程开发过程中,我们也要完成每个程序的整体和局部,小到一个函数,大到一个产品都有自己的整体和局部。整体是面向目标和需求的,是局部依附的基础。局部是面向实现的,是整体的细节。
自己构建程序:自上而下的设计和自下而上的实现。在开发过程中也要遵循自上而下设计、自下而上实现,即要根据目标设计出整体的流程,置空细节。然后再每一个置空的细节处遵循相同的原则进行拆分,先设计总体的流程,然后实现具体的细节。
依赖第三方程序:框架和库。
- 框架是接管整个程序的执行流程,然后通过提供一些可以定制的接口,允许开发者定制局部的逻辑。
- 库是一个精小的组件,由开发者定制程序运行的主要流程,在任意时间使用库来完成局部的逻辑。
整体和局部的组装方式。整体和局部有多种组装的模式。最简单的就是同步调用,例如一个函数构建了流程,调用其他函数实现了某个细节。也可以是继承,父类构建了主要的流程,并且通过抽象的方法置空了一些细节,通过继承的方式在子类中实现这些细节。也可以是异步回调,一个程序在执行整体逻辑的时候,在生命周期的特定节点执行关联的回调函数,或者通过事件驱动的订阅发布模式(观察者模式),异步触发细节的操作。这也是整体和局部组装的最重要的三种方式。
Hook概念
钩子思想。由框架程序实现了整体的逻辑,局部程序只需要通过预留的接口去实现并丰富细节即可。所谓的框架,就是一个提供了多种钩子Hook的整体程序。局部程序就是利用了Hook实现了整体的细节。钩子的实现方式主要包括一下几种
- 可以通过继承实现某个细节
- 通过异步回调实现某个细节
- 如果框架没有预留钩子可以使用破坏性的方式实现一些细节的定义。如java的反射和字节码注入等。
Hook 原意是指钩子,它表示的就是在某个函数的上下文做自定义的处理来实现我们想要的黑科技。


Hooks就像一些外来的钩子,在源代码之间钩取(窃听)一些信息,当它捕捉到自己感兴趣的事发生,就拦截下来,让自己的代码执行一下,处理一下这个信息,然后再放出去继续之前的进程。这样就可以在不用改变源代码的情况下,做一些别的事情,比方说监控、分析和一些恶意的事。
参考文献:https://www.cnblogs.com/ArsenalfanInECNU/p/12871887.html
https://zh.wikipedia.org/wiki/%E9%92%A9%E5%AD%90%E7%BC%96%E7%A8%8B




