编程范式,设计模式和应用程序架构之间的区别?

NSE*_*rer 17 design-patterns programming-languages objective-c

我来自非编程背景,经常遇到编程范式,设计模式和应用程序架构等术语.虽然我认为我对这些术语的含义有一个模糊的理解,但是如果有人能够澄清每个术语的含义,它是如何与另一个不同以及这些概念如何应用于目标C,我将不胜感激.

hvg*_*des 17

编程范式:类似" 功能编程 "," 程序编程 "和" 面向对象编程 "之类的东西.编程范例和使用它们的语言告知代码如何编写.例如,在面向对象编程中,代码被划分为类(有时是语言特征,有时不是(例如javascript)),并且通常支持继承和某种类型的多态.程序员创建类,然后创建类的实例(即对象)来执行程序的操作.在函数式语言中,计算机上的状态变化受语言本身的严重控制.函数是第一类对象,但并非所有函数都是第一类对象的语言都是函数式编程语言(这个主题是一个很好的争论).用函数式语言编写的代码涉及许多嵌套函数,几乎程序的每一步都是新的函数调用.对于程序编程,C程序和bash脚本是很好的例子,你只需要说第1步,执行第2步等,而不创建类和诸如此类的东西.

设计模式:设计模式是一种有用的抽象,可以用任何语言实现.这是做事的"模式".就像你想要实现一堆步骤一样,你可以使用'复合'和'命令'模式,这样可以使你的实现更通用.将模式视为用于以通用方式解决常见编码任务的已建立模板.

应用程序架构:考虑如何构建系统来执行操作.因此,对于Web应用程序,该体系结构可能涉及负载均衡器后面的x个网关,这些网关异步提供队列.消息由z机器上运行的y进程选取,具有1个主数据库和一个备用从服务器.应用程序架构涉及选择所使用的平台,语言和框架.这与软件架构不同,软件架构更多地讲述了如何在给定软件堆栈的情况下实际实现程序.


小智 5

一些快速定义,

应用程序架构描述了软件的整体架构.例如,基于Web的程序通常使用分层架构,其中功能被划分为多个层,例如用户界面(html生成,处理来自用户的命令),业务逻辑(规则如何执行软件的功能)和数据库(持久数据).相反,数据处理应用程序可以使用所谓的管道和过滤器架构,其中一条数据通过管道,其中不同的模块作用于数据.

设计模式是一个低级别的工具,提供了有关如何组织代码以获得特定功能而不影响整体结构的成熟模型.简单示例可能包括Singleton(如何保证单个代码实例的存在)或Facade(如何为更复杂的系统提供简单的外部视图).

另一方面,范式是另一个极端,指导了代码实际布局的原则,并且它们每个都需要完全不同的思维模式来应用.例如,过程编程主要关注将程序逻辑划分为函数并将这些函数捆绑到模块中.面向对象编程旨在将数据和操作数据的操作封装到对象中.函数式编程强调使用函数而不是单独的语句,避免副作用和状态变化.

Objective-C主要是面向对象的C扩展,设计模式和体系结构不是特定于语言的结构.