设计模式: 关于编程范式的声明式和命令式编程及应用框架的开发和设计原则

ArchFlow架构:声明式数据流处理与流批一体的工程实践 在现代数据处理领域,声明式编程范式通过描述‘做什么’而非‘如何做’,显著提升了开发效率和系统可维护性。其核心原理在于将业务意图与底层执行逻辑分离,通过结构化定义(如YAML、SQL)来编排数据流。这种模式的技术价值在于能够统一管理复杂的数据移动、转换与调度,降低系统耦合度,并为数据血缘追溯和可观测性奠定基础。在实际应用场景中,它常与流批一体架构结合,用于构建实时分析、事件驱动型应用和统一数据管道。本文聚焦的ArchFlow架构思想,正是基于声明式与分层解耦理念,深度整合了Flink、Kafka等组件,为应对 阅读详情

编程范式

  • 命令式编程
  • 声明式编程

上述两种范式是相对来说的

命令式编程

  • 详细描述做事过程的方式就可以叫做 命令式
  • 例子: 张三妈妈让张三买食盐
    • 拿钱,开门,下楼,到商店,付款,带着食盐回家
  • 例子:在指定div中展示hello world 文本
    var divEle = document.querySelector('#app')
    divEle.innerHTML = 'hello world'
    
  • 上述div的例子代码虽然只有两部,但是它清晰描述了,完成这件事情,所需要经理的过程
  • 如果我们所做的事情变复杂了,那整个过程也会变得更加复杂
  • 总之:命令式是:关注过程的一种编程范式类似面向过程编程思想,但不一定是面向过程,它描述了完成一个功能的详细逻辑与步骤

声明式编程

  • 声明式:不关注过程,只关注结果的 范式,它并不关心完成一个功能的详细逻辑与步骤,(这并不意味着声明式不需要过程,只是把过程隐藏了)
  • 张三的妈妈说的话,就是声明式编程
  • 例如:模板语法
    <div> {{ msg }} </div>
    

命令式 VS 声明式

  • 哪种好?由两个方向来对比
    • 性能
    • 可维护性

1 )性能

  • 例子
    • div.innerText = 'hello world' 这行代码耗时为1
    • <div>{{ msg }}</div> 这行代码耗时为 1 + n 这里的n是解析处理msg到页面渲染的整个过程
  • 上述例子,我们用耗时来代表性能,耗时越少,性能越强
  • 我们知道:声明式耗时 >= 命令式耗时,即:命令式性能 >= 声明式性能

2 ) 可维护性

  • 可维护性是指,对代码可以方便的 阅读,修改,删除,增加
  • 说白了,代码逻辑越简单,可维护性越强
  • 基于vue的声明式代码可维护性 > 原生js命令式代码的可维护性

企业应用框架的开发和设计原则

  • 企业应用开发和设计如何权衡命令式和声明式两种维度的选择
  • 对不同的企业类型,不同的项目类型 (前台,中台,后台)来说,对应的企业应用设计也存在差异
  • 最关注的两个指标
    • 项目成本: 主要看项目的开发周期,开发周期越长,所付出的人员成本越高,从而导致项目成本越来越高
    • 开发体验: 决定开发者开发体验的核心要素,主要是在开发时和阅读时的难度,这个叫做:心智负担, 声明式开发体验更好,心智负担更低
  • 框架的设计是一个不断取舍的过程,就像是算法一样,没有最优,而是最均衡合适的
    • 1)命令式性能 > 声明式性能
    • 2)命令式可维护性 < 声明式可维护性
    • 3)声明式的框架本质上是由命令式的代码来去实现的
    • 4)企业项目开发,多使用声明式

框架开发和设计原则

  • 在使用vue时是基于声明式的,但是vue内部是通过命令式来实现的
  • vue封装了命令式的逻辑,对外暴露出了声明式的接口
    • 原因在于命令式的可维护性 < 声明式的可维护性
    • vue需要做的是,封装命令式逻辑,同时尽可能减少性能的损耗,在性能和可维护性之间,找到一个平衡点
    • vue的设计原则是:在保证可维护性的基础上,尽可能减少性能损耗
【设计模式】Java 语言不同的编程范式-第1章 本章节主要介绍面向对象编程的基本概念和设计模式的基本原则。 阅读详情

相关推荐

17、Java框架原理与反射机制深度解析

本文深入解析了Java框架的原理与反射机制,涵盖了Java元数据处理、注解演变、框架权衡选择、设计原则以及反射的应用等内容。详细探讨了反射在实际开发中的使用场景,如依赖注入容器、ORM框架和测试框架,并对反射的性能优化提供了建议。文章旨在帮助开发者更好地理解Java框架设计的核心思想及反射机制的合理运用。

blue的专栏 113

函数操作符:从函数组合到声明式编程的核心范式

在编程基础中,函数作为封装逻辑的基本单元,其组合与复用是提升代码质量的关键。函数操作符是一种编程范式,它将函数本身视为可操作、可组合的一等公民,通过定义一套简洁的“运算规则”(如组合、映射)来连接和变换函数。这一原理的核心价值在于,它将代码的关注点从命令式的“如何做”转向声明式的“做什么”,从而显著提升代码的可读性、可维护性和可组合性。在数据处理、异步流控制和构建业务逻辑管道等应用场景中,函数操作符通过类似 `pipe`、`compose` 以及函子(Functor)的 `map`、`flatMap` 等操

weixin_34248023的博客 424

Lattice CrosslinkNx LIFCL-40实战解析:MIPI D-PHY硬核IP配置与CSI-2数据解析全流程

本文详细解析了Lattice CrosslinkNx LIFCL-40 FPGA中MIPI D-PHY硬核IP的配置与CSI-2数据解析全流程。通过实战案例,介绍了硬件环境搭建、寄存器配置、数据包结构解析及视频流重构技巧,帮助开发者快速掌握高速图像采集系统的设计与优化方法。

weixin_29159613的博客 200

Java 设计模式最佳实践:一、从面向对象到函数式编程

Java 设计模式最佳实践:一、从面向对象到函数式编程

龙哥盟 1576

wimdows11 eplan安装过程及遇到的问题

eplan 安装 我的资源里的下载地址,当然也可以有其他渠道下载 https://download.youkuaiyun.com/download/weixin_45529296/85061161 安装1 打开“Electric P8 2.7.3.11418”目录,运行“setup.exe”开始安装,选择系统和程序 接受许可协议,下一步 自己配置安装的各种路径,下一步 安装这个没什么问题,直到完成就行; 安装2 ...

csdn-1122 2万+

Python 爬虫实战:社交媒体(Facebook)评论数据抓取与情感分析

在当今数字化时代,社交媒体平台如 Facebook 已成为人们日常生活中不可或缺的一部分。它不仅是人们分享生活点滴、交流思想的场所,也为企业和研究人员提供了丰富的数据资源。通过分析社交媒体上的评论数据,我们可以了解用户的情感倾向、产品反馈以及社会热点话题等。本文将详细介绍如何使用 Python 爬虫技术抓取 Facebook 上的评论数据,并进行情感分析。这不仅是一次技术实战,更是一次数据探索之旅。

yansideyucsdn的博客 672

Java 设计模式最佳实践:1~5

原文:Design Patterns and Best Practices in Java 协议:CC BY-NC-SA 4.0 译者:飞龙 本文来自【ApacheCN Java 译文集】,采用译后编辑(MTPE)流程来尽可能提升效率。 一、从面向对象到函数式编程 本章的目的是向读者介绍使用设计模式和 Java 中可用的最新特性编写健壮、可维护和可扩展代码的基本概念。为了实现我们的目标,我们将讨论以下主题: 什么是编程范式? 命令式范式 命令式和函数式范式 面向对象范式 统一建模语言综述 面向对象设计

龙哥盟 2969

【ESP32设备通信】-两个ESP32间UART通信

在本文中,我们将使用 Arduino IDE 的 UART 硬件库在两个 ESP32 板之间执行 UART 或串行通信。 要使用 USB 端口调试和编程 ESP32,需要使用称为通用异步接收器/发送器 (UART) 通信的串行端口。 对于大多数传感器和系统,主要的通信方法被认为是 UART。 为了共享工作负载、信息和执行不同的任务,有时需要在两个 ESP32 开发板之间进行通信。

视觉与物联智能 2997

【JAVA设计模式总结】——从面向对象到函数式编程和UML

从面向对象到函数式编程 编程范式 命令式编程范式 命令式编程的主要思想是关注计算机执行的步骤,即一步一步告诉计算机先做什么再做什么。 举例说明: List results = new List(); foreach(var num in collection) { if (num > 5) results.Add(num); } 1)在中央火车站乘坐1号电车;2)在第三站下车;3)向右走,朝第六大道行进,直到第三个路口 C, C++ 还是 C#, Java, Javascript,

your_棒棒糖的博客 237

Nvidia Orin Driveos Camera 介绍及调试详解

自动驾驶-nvidia orin driveos Camera 驱动详解及调试

u011803281的博客 2993

【30天从零玩转AI应用开发】第16篇:智能体Agent入门——ReAct框架原理+首个会思考、会动手的AI实战

摘要: 本文介绍了AI智能体(Agent)的核心概念及其与普通大模型(LLM)的区别。通过ReAct(Reason+Act)框架,智能体实现了自主思考、调用工具和分步执行的能力。文章详细讲解了LangChain Agent的四大组件,并推荐新手使用ZERO_SHOT_REACT_DESCRIPTION类型。最后提供了一个完整的智能体实战代码示例,该智能体具备数学计算和天气查询功能,能够自主选择工具完成任务,展示了AI从”被动回答“到”主动行动“的关键进化。

在上海谋生的软件喵记录喵生 626

Java 设计模式最佳实践(一)

拥有设计模式的知识可以帮助开发人员改进代码库,促进代码重用,并使架构更加健壮。随着语言的发展,新特性在被大量采用之前需要时间才能被完全理解。这本书的任务是简化最新趋势的采用,并为程序员提供良好的实践。在 1995,一个新的编程语言被释放,灵感来自于著名的 C++ 和鲜为人知的 SimultalTalk。Java 是这门新语言的名字,它试图修复它的前身所具有的大部分局限性。例如,Java 的一个重要特性使它流行起来,那就是只需编写一次就可以在任何地方运行;

龙哥盟 724

一张图讲透银行个人外汇业务逻辑和实操

个人外汇业务主要分为结售汇和外币兑换两类,前者满足日常跨境需求,后者因投机属性多数银行已暂停。业务核心是利用汇率波动实现货币兑换,满足支付或投资需求。交易涉及客户分类、主流币种、多种渠道和汇率计算规则,需区分直接/间接标价法判断汇率走势。银行通过"货币兑换"科目核算损益,采用期末折算确认盈亏。监管要求包括5万美元年度额度、合法渠道、真实性原则及大额申报等。随着跨境金融数字化发展,掌握基础逻辑和合规要求是安全参与外汇业务的关键。

银行信息系统应用架构详解 294

Spring Boot在云原生时代的编程范式革新研究

通过对Spring Boot在云原生环境中的技术演进路径及其对新旧编程范式融合的适应性进行系统分析,本研究期望在理论层面揭示编程范式变革与基础设施演进之间的内在关联逻辑,丰富云原生时代软件工程方法论的研究体系;在实践层面为基于Spring Boot进行云原生应用开发的团队提供选型依据、架构决策参考与迁移路径指引。推动新一代编程范式在企业级开发中的合理应用与有序普及,构成本研究的核心价值所在。

搞定过:百亿级数据、万级QPS、零宕机、AI工业化。 271

【调优】OpenClaw调优之模型(tokens)篇

OpenClaw用户常遇四大痛点:规则被无视、API账单暴涨、低效模型选择、记忆丢失。通过/context list命令可解析上下文组成,包括工作区配置、引导参数限制、系统提示词等关键信息。重点需关注Token消耗来源,如核心配置文件、技能工具说明等,避免静默截断。建议精简非必要内容,优化记忆机制,平衡功能与成本。该分析帮助用户减少无效操作,合理控制API支出。

海兰 991

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

C++面试题及答案(一)

这意味着如果程序中的所有对象都是基类的实例,那么它们可以被替换为子类的实例,而不会改变程序的行为。这意味着当用户在浏览网站或进行加密通信时,可以通过验证证书的CA证书来确保所使用的证书是合法和受信任的。map 内部的元素通常按照其 Key 值排序,且排序方式是根据某种明确、严格的弱排序标准进行的,这种排序标准是由 map 内部的比较对象(即 map::key_comp)指定的。当子类的方法实现父类的方法时(重写/重载或实现抽象方法),方法的后置条件(即方法的输出/返回值)要比父类的方法更严格或相等。

qq_16758589的博客 671

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

Jetpack Compose 是什么?

Jetpack Compose 是什么?Jetpack Compose 是一个全新的声明式 UI 框架,用于构建原生 Android 界面的工具包。它采用更少的代码、更直观的 Kotlin API,并拥有更强大的开发工具,旨在加快 Android 开发界面的开发速度。Jetpack Compose可以被理解为传统的 Vie...

weixin_36685239的博客 373

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

Griptape与主流AI框架架构哲学深度解析:模块化设计范式与扩展性模式对比

在AI应用开发领域,框架选择往往决定了项目的技术栈演进路径和长期维护成本。Griptape作为一个模块化Python框架,与LangChain、CrewAI、Pydantic-AI等主流方案形成了鲜明的设计哲学对比。本文将从架构思维、扩展性模式和企业适用性三个创新维度,深入剖析这些框架的核心设计差异,为技术决策者提供深度技术分析。 ## 设计范式对比:模块化架构与集成式思维的碰撞 Gripta

gitblog_00288的博客 1036

编程语言如何塑造开发者思维:从范式到架构的深度解析

编程范式是指导软件开发的根本方法论,它定义了解决问题的基本世界观。面向对象编程以对象为核心构建系统模型,函数式编程强调纯函数与不可变数据,而过程式编程则关注线性步骤控制。这些范式不仅影响代码组织方式,更深刻塑造了开发者的思维路径。从技术价值看,理解不同范式能帮助开发者选择最适合问题域的工具,避免思维定式,提升代码的适应性与可维护性。在实际应用场景中,Java的严格类型系统培养了严谨的接口设计思维,Python的灵活语法鼓励快速原型开发,而函数式思维在处理并发与数据管道时展现出独特优势。本文通过具体代码对比,

weixin_33895516的博客 388

面向对象编程

关注共性,忽略细节通过“类”来抽象现实世界中的事物,例如“用户”“订单”“商品”。目的:降低复杂度,让你不用操心每个细节,只关注本质。将数据(属性)和行为(方法)绑定在一起,并隐藏内部实现细节,对外暴露清晰接口。原则:对象代表什么,就得封装对应的数据,并提供数据对应的行为只暴露业务必需的接口利用访问控制(private/protected/public)加上不可变性(final、只读接口)进一步封装行为//id属性私有化//name属性私有化​//获取id的方法return id;​。

2301_79902294的博客 800

《冒号课堂》目录

郑晖专栏 1721

第三部分:领域驱动设计的柔性设计思想

声明式设计风格是一种编程范式,它强调的是“做什么”(what)而不是“怎么做”(how)。释意接口是一种设计原则,要求接口的命名和设计应明确表达其用途和行为,以提高代码的可读性和可维护性。使用断言明确表示操作的副作用,包括后置条件(操作后的结果)和前置条件(操作前必须满足的条件)。声明式设计通过其高层次的抽象和对意图的清晰表达,提供了一种更简洁、可维护和易于理解的编程方式。这种设计方式强调了编写代码的目的或目标,而不是编写具体的指令来实现这些目标。声明式设计是一种编程范式,其中程序的逻辑表达为一系列声明,

龙大的博客 1020

Kotlin 设计模式及实战 (持续更新中......)

Kotlin 设计模式及实战 “每一个模式描述了一个在我们周围不断重复发生的问题,以及该问题的解决方案的核心。这样,你就能一次又一次地使用该方案而不必做重复劳动”。 Christopher Alexander 模式:在一定环境中解决某一问题的方案,包括三个基本元素: 问题 解决方案 环境 引子 面向对象的设计原则也被称为SOLID。在设计和开发软件时可以应用...

AI天才研究院 9258

JetPack Compose入门知识

Jetpack Compose 是Android新一代UI开发框架,采用声明式开发范式,开发者只需要将注意力放在如何编写UI界面上,当需要渲染的数据发生变化时,框架会自动完成UI刷新,其次它使用Kotlin DSL来编写API,相对于传统的试图开发方式来说,代码的效率更高,并且实现同样的功能只需要以前一半的代码量。可能有读者会说,有些项目就是使用以前的XML+View的方式来开发的,项目比较大,总不能全部用Compose重写一遍吧,这个其实不用担心,因为Compse有良好的兼容性,可以和AndroidVie

知识应该共享,创造才应收费 1156
上一篇: 前端小技巧: TS实现一个获取传入参数类型的函数
下一篇: Vue3源码梳理:关于运行时和编译时
Wang's Blog
博客等级 码龄12年 7434粉丝 2421原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Wang's Blog

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值