首页
学习
活动
专区
圈层
工具
发布
    • 综合排序
    • 最热优先
    • 最新优先
    时间不限
  • 来自专栏京程一灯

    软件设计原则

    Gate 原文标题: Software design principles 英文原文: http://programmergate.com/software-design-principles/ 软件设计一直是开发周期中最重要的阶段 在本文中,我们将讨论有助于创建易于维护和可扩展的软件的关键设计原则。 1. 一个实际的场景 假设老板要求你写一个将word文档转换成PDF的程序。 2. 这样做的好处是什么?! 关注点分离(高内聚/低耦合): 现在 PDFConverter 类对程序中使用的转换算法一无所知,它主要关注的是为用户提供各种转换特性,而关心转换是如何进行的。 从这篇文章中学到的设计原则 以下是构建应用程序架构时要遵循的最佳设计实践: 将程序划分为几个模块,并在每个模块的顶部添加一个抽象层。

    1.1K30发布于 2019-03-28
  • 来自专栏JusterZhu

    软件设计原则

    当谈论软件设计,有一系列重要的原则和规范,它们像指南针一样指引着开发人员的方向,确保他们构建出高质量、可维护和可扩展的软件系统。 这些原则不仅仅是代码编写的指导,更是一种思维方式,一种哲学,它们帮助我们在面对不断变化的需求和复杂性时保持清晰的思路。 在软件领域,有许多设计原则被广泛应用来指导软件开发和设计过程。 以下是一些重要的软件设计原则: 开闭原则(Open-Closed Principle): 定义:开闭原则指出软件实体(如类、模块、函数等)应该对扩展开放,对修改关闭。 void PayForItem(Item item) { // 使用钱包支付物品 } } public class Item { // 物品的属性和逻辑 } 软件设计原则不仅仅是一组规则 愿这些原则一直伴随着你的编程之路,助你不断成长,创造出更出色的软件。

    60810编辑于 2023-09-27
  • 来自专栏程序生涯

    软件设计原则

    了解设计模式的朋友们,想必都听说过“六大设计原则”吧。其实最经典的 23 种设计模式中或多或少地都在使用这些设计原则,也就是说,设计模式是站在设计原则的基础之上的。 2. 开放封闭原则(Open Closed Principle - OCP) 软件实体,如:类、模块与函数,对于扩展应该是开放的,但对于修改应该是封闭的。 简言之,对扩展开放,对修改封闭。 这条原则在 23 种经典设计模式中频繁使用,如:代理模式、装饰模式、适配器模式等。可见江湖地位非常之高! 2. 对应于软件设计而言,最著名的就是“控制反转”(或称为“依赖注入”),我们不需要在代码中主动的创建对象,而是由容器帮我们来创建并管理这些对象。 三、其他设计原则 1. 2. 保持它简单与傻瓜(Keep it simple and stupid - KISS) 不要让系统变得复杂,界面简洁,功能实用,操作方便,要让它足够的简单,足够的傻瓜。 3.

    85210发布于 2020-08-14
  • 来自专栏授客的专栏

    软件设计 软件设计模式之SOLID原则

    软件设计模式之SOLID原则 By:授客 QQ:1033553122 #单一职责原则(SRP) 定义:任何一个软件模块都只对某一类行为者负责 说明:这里“软件模块”,在大部分情况下,可以简单定义为一个源代码文件 #里氏替换原则(LSP) 第一种定义:如果对每一个类型为S的对象o1,都有类型为T的对象o2,使得以T定义的所有程序P在所有的对象o1都代换成o2 时,程序P的行为没有发生变化,那么类型 S 是类型 T 2)当子类覆盖或实现父类的方法时,方法的的形参要比父类方法的输入参数更宽松。 3)当子类的方法实现父类的抽象方法时,方法的返回值要比父类更严格。 #接口隔离原则(ISP) 定义: 1、客户端不应该依赖它不需用的接口 2、类间的依赖关系应该建立在最小的接口上。 #依赖反转原则(DIP) 依赖反转原则被称作依赖倒置原则, 定义: 1)高层策略性的代码不应该依赖实现底层细节的代码 2)抽象不应该依赖于细节,细节应该依赖于抽象 说明: 1、什么是“高层”,什么是“细节

    1.4K20发布于 2021-02-04
  • 来自专栏运维开发王义杰

    软件设计:SOLID 原则

    设计原则是指导软件设计的一般性规则或准则。它们可以帮助开发者编写出结构良好、可维护、可重用、可扩展的代码。 以下是一些被广泛接受和应用的设计原则: 单一职责原则(Single Responsibility Principle, SRP):一个类应该只有一个引起变化的原因。 开放封闭原则(Open-Closed Principle, OCP):软件实体(类、模块、函数等)应该可以扩展,但是不可修改。也就是说,已有的代码在不被修改的情况下可以增加新的行为。 里氏替换原则(Liskov Substitution Principle, LSP):子类型必须能够替换它们的基类型。 以上五条原则被 Robert C. Martin(Uncle Bob)合称为 SOLID 原则。它们是编写面向对象代码的重要准则。

    41630编辑于 2023-08-16
  • 来自专栏TopCoder

    常见的软件设计原则

    设计模式就是软件设计中沉淀出的一些代码设计经验,设计模式主要是基于OOP角度来总结的。 软件设计原则的目的是 代码复用性、代码可扩展性、代码可维护性。 常见的软件设计原则分为:单一职责、开闭原则、接口隔离、里式替换、迪米特原则、依赖倒置原则。 单一职责 一个类或者方法只有一个职责,只有一个引起它变化的原因。 如果一个类有2个以上的职责,这些职责就耦合在一起了,会导致其中一个变化时,会影响到其他责任。多个职责耦合在一起,会影响代码复用性、对测试不友好。 开闭原则 开闭原则就是说对扩展开放,对修改关闭。 里氏代换原则是对“开-闭”原则的补充。实现“开-闭”原则的关键步骤就是抽象化。而基类与子类的继承关系就是抽象化的具体实现,所以里氏代换原则是对实现抽象化的具体步骤的规范。 如果有些场景下,不能严格按照软件设计原则来实现,起码的隔离性要求还是要满足的,这样才能保证在后续修改时控制影响面,避免改动牵一发而动全身。

    1.1K30发布于 2021-07-20
  • 来自专栏coderidea

    软件设计原则之SRP:单一职责原则

    本篇介绍软件设计原则之一SRP:单一职责原则。 SRP:单一职责原则 一个类应该只有一个发生变化的原因。 Why 为何把职责分离到单独的类中很重要呢?因为每一个职责都是变化的一个轴线。 如果没有征兆,那么应用SRP或者任何其他原则都是不明智的。 分离耦合的职责 上面,我们把两个职责都耦合进了modem的实现类中。这不是所希望的,但是或许是必要的。 SRP是所有原则中最简单的原则之一,也是最难正确运用的原则之一。我们会自然地把职责结合在一起。软件设计真正要做的许多工作,就是发现职责并把那么职责相互分离。 事实上,我们将要论述的其余原则都会以这样或那样的方式回到这个问题上。 结论 职责定义为变化的原因,对于一组的耦合的职责设计要不要分离,具体要看职责是不是同时变化,我们可以通过接口来分离耦合的职责。

    50830编辑于 2022-06-08
  • 来自专栏IT技术订阅

    软件设计SOLID原则及示例

    SOLID是面向对象编程和设计的五大基本原则的首字母缩写,由Robert C. Martin提出。遵循这些原则有助于开发人员设计出更易于理解、维护和扩展的软件系统。 下面是对SOLID原则的详细解释: 1. 单一职责原则(Single Responsibility Principle, SRP) - 定义:一个类应该只负责一个功能领域中的相关职责。 2. 开放封闭原则(Open-Closed Principle, OCP) - 定义:软件实体(类、模块、函数等)应该是可扩展的,但是不可修改。即对于扩展是开放的,对于修改是封闭的。 下面我将通过Java代码示例来说明SOLID原则中的每一项原则如何应用。请注意,这些例子是为了演示目的而简化的,实际项目可能会更复杂。 1. } } class LogService { public static void log(String message) { // 日志记录实现... } } 2.

    54210编辑于 2024-07-05
  • 来自专栏JavaEdge

    软件设计原则(02)-开闭原则(Open Close Principle,OCP)

    这是Bertrand Meyer在《面向对象软件构造》(Object-Oriented Software Construction)提出,它给软件设计提出极高要求:不修改代码,对扩展开放。 它是为软件实体的未来事件而制定的对现行开发设计进行约束的一个原则2 案例 - 书店 2.1 源码 package com.javaedge.design.principle.openclose; /** * 书籍接口 * * @author JavaEdge 原代码里: 前2步获取源数据,生成统计信息 后2步生成报表,将统计信息通过邮件发出 后2步和即将添加的步骤有个共同点,都使用统计信息。 提供扩展机制,Spring Boot和Dubbo继续改进,各自提供扩展点: Spring Boot允许用户自定义starter Dubbo可自定义协议 1、识别修改点,构建模型,将原来静态逻辑转为动态逻辑 2

    58140编辑于 2023-09-14
  • 来自专栏技术分享-yangwq

    《如何做好软件设计》:设计原则

    个人认为设计原则软件设计的基石之一,所有语言都可以利用设计原则开发出可扩展性、可维护性、可读性高的项目,学好设计原则,就等于我们拥有了指南针,不会迷失在各个设计模式的场景中。 郑晔老师的《软件设计之美》指出:设计模式是在特定问题上应用设计原则的解决方案。我们可以类比设计原则是心法,设计模式是招式,两者相辅相成,虽然脱离对方都能使用,但是不能融会贯通。 本章主要涉及的设计原则有: 1. SOLID原则 2. KISS原则、YAGNI原则、DRY原则 接下来对各个原则进行详细说明,有错误或语义不明确的地方欢迎大家指正。 ## 一、SOLID原则 1. S(Single Responsibility Principle,SRP):单一职责原则2. 接口隔离原则与单一职责的区别: 1、单一职责要求的的是模块、类、接口的职责单一, 2、接口隔离原则要求的是暴露给使用者的接口尽可能少。

    80310发布于 2021-02-06
  • 来自专栏超级架构师

    软件设计】TypeScript 中的 SOLID 原则

    Martin(也称为 Uncle Bob)发明的所谓 SOLID 设计原则。 在本文中,我将通过使用 TypeScript 编写的示例向您介绍这些原则。 单一职责原则 (SRP) “一个类改变的原因不应该超过一个。” 一个类应该有一个目的/责任,因此只有一个改变的理由。遵循这一原则可以更好地维护代码并最大限度地减少潜在的副作用。 这违反了开闭原则。 】公众号 【jiagoushipro】 【超级架构师】 精彩图文详解架构方法论,架构实践,技术原理,技术趋势。 知识星球【职场和技术】微博【智能时刻】智能时刻哔哩哔哩【超级架构师】抖音【cea_cio】超级架构师快手【cea_cio_cto】超级架构师 小红书【cea_csa_cto】超级架构师 谢谢大家关注

    47020编辑于 2022-03-22
  • 来自专栏黑光技术

    一些软件设计原则

    我们的程序员或是架构师在设计系统的时候,会考虑很多扩展性的东西,导致在架构与设计方面使用了大量折衷,最后导致项目失败。 CCP原则就是把因为某个同样的原因而需要修改的所有类组合进一个包里。如果2个类从物理上或者从概念上联系得非常紧密,它们通常一起发生改变,那么它们应该属于同一个包。 CCP延伸了开闭原则(OCP)的“关闭”概念,当因为某个原因需要修改时,把需要修改的范围限制在一个最小范围内的包里。 参考:http://c2.com/cgi/wiki? CCP让包尽可能大(CCP原则加入功能相关的类),CRP则让包尽可能小(CRP原则剔除不使用的类)。它们的出发点不一样,但不相互冲突。 参考:http://c2.com/cgi/wiki? 参考:http://c2.com/cgi/wiki?

    1.3K30发布于 2019-03-06
  • 来自专栏超级架构师

    软件设计原则】CUPID——快乐的编码

    如果我认为这些天 SOLID 原则没有用,那么我会用什么来代替它们呢?任何一套原则都适用于所有软件吗?我们所说的原则是什么意思? 我相信软件的某些特性或特征使它成为一种乐趣。 特性高于原则¶ 当我开始对 SOLID 的五项原则做出回应时,我设想用我认为更有用或更相关的东西来替换每一项。我很快意识到原则的想法本身是有问题的。原则就像规则:你要么顺从,要么不顺从。 2 相反,我开始考虑特性:代码的品质或特征,而不是要遵循的规则。特性定义要移动的目标或中心。您的代码只是离中心更近或更远,并且始终有明确的行进方向。 例如,虽然“做好一件事”的 Unix 哲学听起来像单一职责原则,但前者是关于你如何使用代码,而后者是关于代码本身的内部结构。 我喜欢的一个模型——来自像古老的 XStream 这样的开源项目——有一个 2 分钟的教程、一个 10 分钟的教程和一个深入研究。这让我可以增量投资,并在我发现这不适合我时立即退出。

    93610编辑于 2022-07-29
  • 来自专栏韩曙亮的移动开发专栏

    【设计模式】软件设计七大原则 ( 开闭原则 )

    文章目录 一、开闭原则简介 二、开闭原则代码示例 1、商品接口 2、普通商品类 3、折扣商品类 4、测试类 一、开闭原则简介 ---- 开闭原则 : 定义 : 一个 软件实体 , 类 / 模块 / 函数 , 对 扩展 开放 , 对 修改 关闭 ; 抽象与实现 : 用 抽象 构建框架 , 用 实现 扩展细节 ; 优点 : 提高 软件系统 的 可复用性 及 可维护性 ; 开闭原则 是 面向对象 设计 中 , 最基础的 设计原则 , 它指导我们建立稳定灵活的系统 ; 开发新功能时 , 尽量 不修改原有的代码 , 尽量 使用扩展增加新功能 ; 实现 开闭原则 的核心思想 是面向抽象编程 , 不是面向实现编程 , 让类依赖于抽象 , 对于修改来说就是封闭的 ; 通过 面向对象 的 继承 , 以及 多态机制 , 可以实现 对 抽象 的 继承 , 通过 重写改变其固有方法 , 或 实现新的扩展方法 ; 二、开闭原则代码示例 商品接口 */ public interface IGood { Integer getId(); String getName(); Double getPrice(); } 2

    2.5K10编辑于 2023-03-29
  • 来自专栏学习与分享

    软件设计原则:耦合与内聚

    耦合和内聚是软件设计中两个至关重要的概念,它们直接影响着代码质量和系统的可维护性。本文将深入探讨耦合和内聚的含义,以及如何在软件设计中达到良好的平衡。 什么是耦合? 耦合与内聚的平衡 在软件设计中,耦合和内聚并非对立的关系,而是需要平衡的。高内聚度通常伴随着低耦合度,因为一个功能单一的模块不容易受到外部变化的影响。 结语 耦合与内聚是软件设计中需要深入理解和恰当平衡的概念。通过降低模块之间的耦合度,提高模块的内聚性,我们可以构建出更加健壮和可维护的系统。

    1.5K10编辑于 2024-02-20
  • 来自专栏运维开发王义杰

    软件设计: 探讨复杂性下沉原则

    软件设计中,复杂性下沉(Complexity Sink)是一个关键概念,它指导开发者如何合理分配和管理软件系统中的复杂性。本文将深入探讨复杂性下沉的概念、它的重要性以及如何在实际项目中有效实施。 2. 封装和抽象 使用封装隐藏内部复杂性,对外提供简单的接口。 通过抽象将复杂的实现细节与高层业务逻辑分离。 3. 结论 复杂性下沉是软件设计中的一个重要原则,它帮助开发者合理地管理和分配系统中的复杂性。 通过层次化设计、封装和抽象,以及服务导向架构,我们可以有效地实施这一原则,从而提高软件的可维护性、稳定性和扩展性。

    33810编辑于 2024-01-26
  • 来自专栏小菜良记

    软件设计原则讲解,昭昭在目!

    忆往昔,学习软件设计原则的时候还是在大学,那时候编程入坑不深, 只觉得可学可不学,毕竟课程有些无聊,看今朝,是自己年轻了! ? 一、UML 图 不要觉得奇怪为什么不讲软件设计原则而说到了 UML 图,因为软件设计原则软件设计模式中你讲到最多的便是利用类图来表示 类与类之间的关系,因此我们需要 先会看,再会理,最后再来写! 2)类图的作用 类图是一种静态的结构图,描述了系统中类的集合、类的属性和类之间的关系,可以简化对系统的理解。 微信搜:小菜良记 更多干货值得关注 二、软件设计原则 上面铺垫了那么多知识,主角终于可以上场了。我们也不卖关子了,直接来看下我们将要了解到的软件设计原则: ? 2. 里氏代换原则 里氏代换原则:任何基类可以出现的地方,子类一定可以出现。

    55340发布于 2021-01-08
  • 来自专栏JavaEdge

    软件设计七大原则实战(四)-单一职责原则1 定义2 特点3 优点

    单一职责原则的英文名称是Single Responsibility Principle,简称是SRP。这个设计原则备受争议,只要你想和别人争执、怄气或者是吵架,这个原则是屡试不爽的。 如果你是老大,看到一个接口或类是这样或那样设计的,你就问一句:“你设计的类符合SRP原则吗?”保准对方立马“萎缩”掉,而且还一脸崇拜地看着你,心想:“老大确实英明”。这个原则存在争议之处在哪里呢? 2 特点 ? 3 优点 ?

    51820发布于 2018-09-20
  • 来自专栏JavaEdge

    软件设计七大原则实战(二)-开闭原则1 开闭原则的定义2 开闭原则的庐山真面目3 实例

    1 开闭原则的定义 开闭原则是Java世界里最基础的设计原则,它指导我们如何建立一个稳定的、灵活的系统,先来看开闭原则的定义: Software entities like classes,modules 对于开闭原则,我们也采用这三步来分析,即什么是开闭原则,为什么要使用开闭原则,怎么使用开闭原则2 开闭原则的庐山真面目 定义已经非常明确地告诉我们:软件实体应该对扩展开放,对修改关闭 其含义是说一个软件实体应该通过扩展来实现变化,而不是通过修改已有的代码来实现变化 ? 好办法,修改也少,风险也小,修改后的类图如图6-2所示。 ? image 图6-2 扩展后的书店售书类图 OffNovelBook类继承了NovelBook,并覆写了getPrice方法,不修改原有的代码。

    1.3K20发布于 2018-09-20
  • DRY 软件设计原则-架构快速进阶教程

    概述 在本教程中,我们将了解 DRY 软件设计原理。 2. 定义 DRY 代表 不要重复自己。这是一个软件开发原则,目标是消除逻辑重复。 一个例子 例如,编写一个包含特定逻辑的函数,然后在我们的代码中多次调用它,就是应用 DRY 原则的一种形式。 DRY 的优势 DRY 原则的优点包括: 它使代码库更易于维护,因为如果我们想更改逻辑或添加它,我们只需要在一个地方更改它,而不是在出现逻辑的多个位置更改它 它使代码更易于阅读,因为代码中的冗余会更少 DRY 的反面 WET(可以代表我们喜欢打字,每次都写,浪费每个人的时间)是指我们在代码中多次编写相同的逻辑,违反了DRY原则。结果,代码变得更加难以阅读。

    38100编辑于 2025-04-05
领券