架构基本原则:
这里,将描述一些在这个架构设计中的基本原则,其 中很多都是经典的设计原则,不过针对分层架构的特点,用我自己的语言进行了 描述。其中也有我自己提出的原则。
逐层调用原则及单向调用原则
现在约定将N层架构的各层依次编号为1、2、…、K、…、N -1、N,其中层的编号越大,则越处在上层。那么,我们设计的架构应该满足以下 两个原则:
1.第K(1<K<=N)层只准依赖第K-1层,而不可依赖其他 底层。
2.如果P层依赖Q层,则P的编号一定大于Q。
其中第一个原 则,保证了依赖的逐层性,及整个架构的依赖是逐层向下的,而不能跨层依赖。 第二个原则,则保证了依赖的单向性,及只能上层依赖底层,而不能底层反过来 依赖上层。
针对接口编程,而不是针对实现编程
这里所指的接口 ,不是特指编程语言中的具体语言元素(如C#中由Interface定义的语言接口), 而是指一种抽象的,在语义层面上起着接合作用语义体。它的具体实现,可能是 接口,可能是抽象类,甚至可能是具体类。
我认为,从不同的视角,接口 可以有以下两种定义:
1.接口是一组规则的集合,它规定了实现本接口的 类或接口必须拥有的一组规则。体现了自然界“如果你是…… 则必须能……”的理念。
2.接口是在一定粒度视图上 同类事物的抽象表示。注意这里我强调了在一定粒度视图上,因为“同类事 物”这个概念是相对的,它因为粒度视图不同而不同。
具体到N层架 构中,针对接口编程的意义在部分上是这样的:
现仍约定将N层架构的各 层依次编号为1、2、…、K、…、N-1、N,其中层的编号越大,则越 处在上层,那么第K层不应该依赖具体一个K-1层,而应该依赖一个K-1层的接口, 即在第K层中不应该有K-1层中的某个具体类。
时间: 2024-09-28 10:17:45