diff --git a/设计模式/1.8 整体局部思想.md b/设计模式/1.8 整体局部思想.md new file mode 100644 index 00000000..19c99a2b --- /dev/null +++ b/设计模式/1.8 整体局部思想.md @@ -0,0 +1,24 @@ +## 整体和局部 + +程序可大可小。任何一个程序都是一段完整的逻辑。程序可大可小,可以是一个函数、一个类、一个模块、一个应用、一个产品,但是无论在哪个维度,它都是一段完整的逻辑。 + +整体和局部的概念。要想写好一段逻辑,就要明白整体和局部的概念。框架完整了整体,库实现了局部一样,在编程开发过程中,我们也要完成每个程序的整体和局部,小到一个函数,大到一个产品都有自己的整体和局部。整体是面向目标和需求的,是局部依附的基础。局部是面向实现的,是整体的细节。 + +自己构建程序:自上而下的设计和自下而上的实现。在开发过程中也要遵循自上而下设计、自下而上实现,即要根据目标设计出整体的流程,置空细节。然后再每一个置空的细节处遵循相同的原则进行拆分,先设计总体的流程,然后实现具体的细节。 + +依赖第三方程序:框架和库。 + +* 框架是接管整个程序的执行流程,然后通过提供一些可以定制的接口,允许开发者定制局部的逻辑。 +* 库是一个精小的组件,由开发者定制程序运行的主要流程,在任意时间使用库来完成局部的逻辑。 + +整体和局部的组装方式。整体和局部有多种组装的模式。最简单的就是同步调用,例如一个函数构建了流程,调用其他函数实现了某个细节。也可以是继承,父类构建了主要的流程,并且通过抽象的方法置空了一些细节,通过继承的方式在子类中实现这些细节。也可以是异步回调,一个程序在执行整体逻辑的时候,在生命周期的特定节点执行关联的回调函数,或者通过事件驱动的订阅发布模式(观察者模式),异步触发细节的操作。这也是整体和局部组装的最重要的三种方式。 + +## Hook概念 + +钩子思想。由框架程序实现了整体的逻辑,局部程序只需要通过预留的接口去实现并丰富细节即可。所谓的框架,就是一个提供了多种钩子Hook的整体程序。局部程序就是利用了Hook实现了整体的细节。钩子的实现方式主要包括一下几种 + +* 可以通过继承实现某个细节 +* 通过异步回调实现某个细节 +* 如果框架没有预留钩子可以使用破坏性的方式实现一些细节的定义。如java的反射和字节码注入等。 + +Hook 原意是指钩子,它表示的就是在某个函数的上下文做自定义的处理来实现我们想要的黑科技。 diff --git a/设计模式/1.9 载荷载体思想.md b/设计模式/1.9 载荷载体思想.md new file mode 100644 index 00000000..4dc53dc6 --- /dev/null +++ b/设计模式/1.9 载荷载体思想.md @@ -0,0 +1,5 @@ +## 载荷和载体 + +循环定义一下这两者的概念,载荷试运行在载体上的内容信息,载体是运行载荷的工具。载荷和载体是相对的,例如当你在开发一个支付系统时。订单就是载荷,系统就是载体;但是相对于中间件/运维平台来说,支付系统就是载荷,中间件运维平台就是载体;相对于应用管理平台和容器服务平台来说,中间件平台又是载荷,容器服务平台又是载荷;依次类推容器服务是物理机的载体,物理机是容器服务的载荷;商品交易信息是订单的载荷,订单是商品交易信息的载体... ... + +载体是为载荷服务的。无论你处在哪一个位置,你开发的技术都是你服务对象的载体,你也是你一依赖的服务的载荷。所以开发者最主要的事情就是用好载体,服务载荷。