为何类库的设计要保持相对稳定

三层架构设计 三层架构设计 为什么要使用架构 1.框架能够清晰的描述实体的组成结构 2.框架是实体的骨干,有骨干的实体显得很“结实” 3.框架设计的好坏直接影响到实体的质量 4.框架设计在实体构建中起着举足轻重的作用 软件是一个能够帮助人们高效办公的应用系统 软件开发之前我们必须要一个高质量的框架来保证软件的运行和后期维护 两层架构 视图层-数据访问层 这两层之间的数据传递通过数据实体模型来作为载体传递 两层和... 阅读详情

网友提问:
看了think in java, 上边说类库的设计者要考虑到,一旦一个类设计出来就不可以改,说是会影响到现在的程序.

我搞不明白这是怎么回事.

你改你的,如果我用的是旧版本的类库我接着用旧的,关我什么事呢?

请详细解释一下.

答复:
为啥出新版类库呢?有2个原因

1 修正BUG,此时你如果用了新的,则不会有任何影响
2 增加了新功能,你的老程序也不会有影响

作为类库的使用者
如果你继续用旧的,没有问题,但如果有个BUG影响了你的程序,而这个已经在新的里面修正了,你怎么办?
OK,你升级了,可是第三个问题出现了。

3 系统不仅增加了功能,且修改了类的路径和名字等,可能只是为了规范某些东西。 象Spring,Hibernate这样的系统,都不保证2个版本的类库没有变化。

所以一旦你被迫使用了新的类库,则可能必须修改许多程序。否则你必须自己编码解决老版本类库遗留的错误BUG,且无法使用新版本的特性了。

作为类库开发者而不是使用者:
你的新版本,应该考虑和老版本的兼容程度,如果不兼容,你可能需要同时维护2个或者更多个版本的 bugfix了。
同时要提供完整的变动明细,提供修改的方法。文档很重要。


个人建议,如果你的系统是遗留系统,能够稳定运行,强烈建议不要更换类库,保持系统的稳定性。
能用就行,好用就是精品。我的个人评价标准。

设计类库、类和方法的最佳实践 本章深入探讨了Java中类库、类和方法设计的多个方面,强调了组织结构的重要性,如将类封装成包以提高可管理性。介绍了松耦合和强内聚的概念,以及如何通过封装实现代码的抽象和保护。详细讨论了方法设计、命名以及异常处理的重要性,并强调了代码重用、可维护性和代码简洁性。最后,介绍了断言和枚举的概念,它们在提高代码正确性和定义有限值集方面的作用。 阅读详情

相关推荐

PowerBuilder 9打造最炫屏幕键盘界面设计

PowerBuilder 9(简称PB9)作为Sybase公司推出的经典快速应用开发工具,自1990年代起便在企业级Windows应用开发中占据重要地位。其以数据窗口(DataWindow)为核心,结合面向对象的编程模型和丰富的GUI控件库,极大提升了开发效率。随着嵌入式设备和触控屏设备的普及,传统物理键盘的依赖逐渐减弱,屏幕键盘(On-Screen Keyboard)成为人机交互设计中不可或缺的一环。

weixin_35756690的博客 1162

Java中JDK类库常用的6种设计模式

Java中JDK类库常用的6种设计模式:1、抽象工厂。2、建造者模式。3、工厂模式。4、原型模式。5、单例模式。6、适配器模式。

qq_30713721的博客 1094

.NET类库开发的设计准则.pdf

.NET类库开发的设计准则.pdf。带完整标签。感谢网络中提供的那份word文档。

面向对象设计原则-类库设计原则

1.共同重用原则(CCP):一组接口中应该是共同重用的。如果重用了这组中 的一个类,那么就要重用包中的所有的类。相互之间没有紧密联系的类不应该在同一组中。 这个原则强调了分类,就具有相同关系或者关联比较紧密的类应该分到一组中,方便修改和客户端的调用。 2.共同封闭原则:类库中的类对于同一类性质的变化应该是封闭的。 一个变化若多一个类产生影响,那么也就会对这个类库中的所有类都产生影响,而对其他类库没...

wb175208的专栏 2183

类库设计的详细设计

类库设计,c++的,mfc和win32api的综合应用,毕业设计程序论坛

从类库看设计模式

很多时候,对于一个设计来说(软件上的,建筑上的,或者它他工业上的),经验是至关重要的。好的经验给我们以指导,并节约我们的时间;坏的经验则给我们以借鉴,可以减少失败的风险。然而,从知识层面上来讲,经验只是作为一种工作的积累而存在于个人的大脑中的,很难被传授或者记录。为了解决这样的问题,人们提出了所谓的模式的概念。所谓模式,是指在一个特定背景下,反复出现的问题解决方案。模式是经验的文档化。

面向对象可复用技术:类库、框架与设计模式

可复用技术 自从软件开发成为一项严谨的职业以来,程序员们都在寻找轻松工作编写完美代码的方法。可惜的是,Brooks博士在他的名著《人月神话》中,就论述了软件本身所具有的复杂性,这个世界上没有能够一劳永逸的银弹。 但现实却是,我们的工作和生活需要越来越多的软件来支撑。所以为了减少软件开发的工作量,降低系统隐藏的bug量,有许多理论被提出以解决这一问题。 可复用技术可以说是非常直观的想法,这来源于人们在其他工程领域的经验。例如在制造业、建筑工程中,大量的基础部件都是标准的通用件。 那么软件是不是也可以由一组标准

一天一点进步 1271

Android ------ 开源的Modnet算法实现抠图和更换背景

Portrait Matting (sight-x.cn) 飞桨PaddlePaddle-源于产业实践的开源深度学习平台 GitHub - PaddlePaddle/PaddleSeg at develop

切切歆语的博客 1万+

类库设计准则(属性设计)

属性设计 通常,方法代表操作而属性代表数据。属性像字段一样使用,这意味着属性不应进行复杂的计算,也不应产生副作用。有关属性设计的更多信息,请参见索引属性设计和属性更改通知事件。 下列准则可帮助确保正确地设计属性。 如果调用方不应当更改属性值,则要创建只读属性。 注意,属性类型的可变性会影响最终用户可以更改的内容。例如,如果定义一个返回读/写集合的只读属性,则最终用户不能向该属性分配其他集合...

weixin_30855761的博客 192

为什么你的Mac蓝牙总断连?深入解析硬件干扰与系统设置避坑

本文深入解析Mac蓝牙频繁断连的原因,包括硬件干扰(如WiFi同频干扰、USB设备电磁干扰)和系统设置问题,并提供详细的优化方案和诊断工具(如blueutil)使用指南,帮助用户有效解决蓝牙稳定性问题。

ik67890123的博客 682

uniapp 使用摄像头 live-pusher (APP)

uniapp 中开发 app 时使用live-pusher踩过的坑

随身笔记 1万+

淘宝前端javascript类库选择原因

注:本文已发表于程序员杂志。下面的文字总体结构未变,细节稍有修改。) 书写干净漂亮的代码非常不易。作为前端工程师,还得处理恼人的浏览器兼容性问题。Protoype, jQuery, YUI, MooTools 等各种 JavaScript 类库,都是为了让前端工作更轻松自如。下面将介绍前端类库 KISSY 的起因、设计原则和核心功能,以及相关开发流程和社区建设。 起因 已经有了 ...

刘青山的资料库-发表是最好的记忆 244

大模型之Spring AI实战系列(二十六):Spring Boot + DeepSeek 实战指南:构建AI聊天应用

在人工智能技术飞速发展的今天,大型语言模型已经成为了推动技术创新的重要力量。DeepSeek作为国内领先的大型语言模型提供商,其推出的DeepSeek系列模型在多个领域都展现出了卓越的性能。本文将详细介绍如何使用Spring Boot框架集成DeepSeek API,构建一个简单的AI聊天应用。我们将实现两个核心功能:普通文本生成和流式文本生成。

寻道AI,探索AI无限可能! 2264

AI自动生成类库节点与流程图:从Mermaid到ComfyUI的落地实践

在软件开发和系统设计中,可视化表达是沟通架构与流程的关键。传统手绘类图、流程图不仅耗时,且难以与代码同步。借助大模型技术,开发者可以将源码结构、流程描述快速转化为规范的图形文本,如Mermaid和PlantUML,甚至生成ComfyUI等平台的节点配置。本文从概念、原理到应用场景,介绍了三种主流实现路线:AI直出图表文本、源码解析增强生成类库节点、节点配置自动导入可视化平台。同时涵盖环境准备、批量调用、问题排查与最佳实践,帮助读者减少重复劳动,提升文档维护效率。

weixin_34342905的博客 425

Simulink仿真状态空间中状态变量时域响应

起因 今天老师留了一道关于状态空间变量响应的题,于是想用simulink仿真,一开始使用state-space模块,但是发现它只能输出y,没办法显示状态变量的变化情况。然而状态变量之间的关系都可以表示为一阶微分方程组,因此我们考虑在Simulink中搭建微分方程组来求解这个问题。 微分方程组 x1˙=x2x2˙=−4x1−5x2+1(1)\dot{x_1}=x_2\\ \dot{x_2}=-4x_...

ZYunfei的博客 7460

ComfyUI 提示Allocation on device 显存占满的解决方法及秋叶整合包的优化方法

最近在玩ComfyUI的时候,发现一个让人崩溃的问题——VRAM一直占满,最终报错: 简单来说,就是显卡显存溢出了,导致程序无法继续运行。尤其是一些大模型或者复杂工作流,很容易让显存飙升到极限。那怎么办?直接在启动命令后加上 ,例如: 这个参数的作用是啥? 默认情况下,ComfyUI会尽量让模型一直留在显存里,即使有些部分暂时用不到,导致显存迟早被填满。而 可以强制让ComfyUI把数据卸载到常规内存,减少显存占用。如果你的显存真的不够用,还可以再加 参数: 这个参数的意思就是开启低显存模式,进一步优化

代码简单说 Vue、JAVA、PHP、Node.js 熟练运用,接口、架构、性能全搞定。 1万+

C#高效开发:工具类库与Fluent模式实战指南

在C#开发中,工具类库和Fluent接口模式是提升开发效率的关键技术。工具类库通过封装常用功能(如字符串处理、集合操作等),显著减少样板代码并提高代码复用率。Fluent模式则通过链式方法调用实现更直观的API设计,改善代码可读性。这些技术在企业级应用中尤为重要,能有效降低错误率并提升团队协作效率。本文以Humanizer、Polly等热门库为例,结合电商、金融等实际场景,展示如何利用这些工具优化C#项目开发流程。

weixin_34116482的博客 169

Android SELinux——neverallow问题处理(十六)

遇到 neverallow 规则问题,千万别急着去注释/剔除里面原有的规则(原生的尽量别动)。增加 allow 规则是常见的解决办法,但是随着 android 版本的升级,系统对 SELinux 的管控越来越严,增加了大量的 neverallow。一般情况下,向默认标签授予权限的做法是错误的,其中许多权限都是 neverallow 规则所不允许的。按照上面方法去添加 SELinux 可能会违反了 neverallow 规则,编译时候会报 neverallow 相关的错误。

小旭的专栏 2688

Java开发的商城系统怎样

ava 开发的商城系统具有多方面的优势,也存在一定的局限性,以下是详细分析:

hunzi_1的博客 415

深入解读WT软件湍流强度计算与分析

深入解读WT软件湍流强度计算与分析

weixin_46713695的博客 1026

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

AI自动生成类库节点与流程图:从代码解析到渲染的落地实践

在软件开发与文档维护中,代码结构图和业务流程图常常因更新滞后而失去价值。借助AST抽象语法树与Mermaid等图表语法,开发者可以将源码解析、信息结构化、图表生成与渲染输出这条链路自动化,让图表与代码保持同步。这类方案不仅适用于类库关系可视化,也能将自然语言流程描述快速转为规范流程图,显著提升旧项目补文档、新人导航图制作和代码评审的效率。然而,AI生成的价值不在于画图速度,而在于解析准确、中间格式稳定、渲染可复现。从最小模块验证到批量扫描与增量更新,再到接入CI流水线,逐步建立可持续的文档自动化流程,才能让

weixin_33875564的博客 359

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

c++template method模板方法

模板方法一般在类库里面比较常见,类库里把实现某一功能需要的各个步骤逻辑实现好,调用者只需要按照需要重新修改某几步。框架是相对稳定的,变化隔离在客户程序。 例如实现某一功能逻辑如下 step1() step2() if (step()3) setp4() setp5() step2和step4不同用户有不同实现,其他步骤固定 将上述逻辑用模板方法实现 template_method_lib.h #i...

pynash123的博客 478

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

《唯品会Java开发手册》方法设计规约解读:从方法长度、参数校验到签名稳定性的 14 条实战准则

本文完整解读《唯品会Java开发手册》(基于《阿里巴巴Java开发手册》定制)第四章"方法设计"的全部 14 条规约,涵盖方法长度度量、抽象层级、参数个数与校验、返回值设计、重载陷阱、接口签名稳定性等日常开发中最常见的设计决策。读完本文,你将掌握一套可直接落地的 Java 方法设计检查清单,并能结合仓库中的 vjkit 参数校验工具与 sonar-vj 定制规则(如 [UnusedMethodPa

gitblog_00428的博客 312
上一篇: 【征集】面试第二问,在友情和公司利益间选择,你最要好的同事违反了公司的制度,而领导不知道, 你该怎么做
下一篇: 早起的鸟儿有虫吃,早起的虫儿被鸟吃
老紫竹
博客等级 码龄19年 1万+粉丝 1252原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值