我最近一直在思考如何以分层方式组织代码。我一直在想四种不同的方法:
您可能会争辩说,实例化只是一种不同的调用堆栈,而继承只是另一个 namespace 堆栈,但不管这些是我想到的。
那么有没有人有任何其他适合这里的概念堆栈,或者调用和命名空间将它们总结起来?还有其他想法吗?
最佳答案
我认为这是一个很好的问题,因为它让我们思考我们构建软件的方式。构建软件对于在代码与其架构之间创建一个抽象层是必要的。
我最近得出的结论是 横向分层是一种方便的技术,但是 垂直分区更有用 .水平分层的一个例子是经典的 DAL->BAL->GUI 场景,而垂直分区将应用程序划分为它支持的功能。
的模型堆栈显然存在于水平分层模型中。而且在垂直分区功能时,您也可以找到堆栈模型。我发现垂直分区特别吸引我的想法是,我的每个垂直切片都可以有自己的水平分层堆栈,这种想法类似于像 CQRS 这样越来越流行的模式。应用程序的垂直分区之间也可能存在依赖关系,再次建模为堆栈。但有时这是 不够用你需要一个 更复杂的抽象比堆栈,例如 图 .
撇开这一点,我想我们喜欢的原因成堆思考 是因为我们可以在看到东西不同级别的抽象 ,按需推送/弹出堆栈上的东西。其他结构如 图 有时更适合描述问题,如 依赖项 组件之间,但它们更复杂,因此不如堆栈方便。
这也是抛弃多重继承的原因:依赖关系图(多重继承)比简单的堆栈(单一继承)更难理解。
还有什么可以建模为堆栈?坦率地说,我认为我们这里有很多东西,让你走得很远:
关于namespaces - 概念 "stacks"和编程中的代码层,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3489271/