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

    软件设计原则

    Gate 原文标题: Software design principles 英文原文: http://programmergate.com/software-design-principles/ 软件设计一直是开发周期中最重要的阶段 在本文中,我们将讨论有助于创建易于维护和可扩展的软件的关键设计原则。 1. 一个实际的场景 假设老板要求你写一个将word文档转换成PDF的程序。 3. 从这篇文章中学到的设计原则 以下是构建应用程序架构时要遵循的最佳设计实践: 将程序划分为几个模块,并在每个模块的顶部添加一个抽象层。

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

    软件设计原则

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

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

    软件设计原则

    了解设计模式的朋友们,想必都听说过“六大设计原则”吧。其实最经典的 23 种设计模式中或多或少地都在使用这些设计原则,也就是说,设计模式是站在设计原则的基础之上的。 3. 里氏替换原则(Liskov Substitution Principle - LSP) 使用基类的指针或引用的函数,必须是在不知情的情况下,能够使用派生类的对象。 3. 共同封装原则(Common Closure Principle - CCP) 应该将易变的类放在同一个包里,将变化隔离出来。该原则是“开放-封闭原则”的延生。 4. 对应于软件设计而言,最著名的就是“控制反转”(或称为“依赖注入”),我们不需要在代码中主动的创建对象,而是由容器帮我们来创建并管理这些对象。 三、其他设计原则 1. 3. 高内聚与低耦合(High Cohesion and Low Coupling - HCLC) 模块内部需要做到内聚度高,模块之间需要做到耦合度低。 4.

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

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

    软件设计模式之SOLID原则 By:授客 QQ:1033553122 #单一职责原则(SRP) 定义:任何一个软件模块都只对某一类行为者负责 说明:这里“软件模块”,在大部分情况下,可以简单定义为一个源代码文件 3)当子类的方法实现父类的抽象方法时,方法的返回值要比父类更严格。 4)遵守以上几点的情况下,无法满足需求时,可以考虑在子类中增加自己特有的方法。 接口隔离原则和单一职责原则虽然很类似,但是两个原则还是存在着明显的区别。单一职责原则是在业务逻辑上的划分,注重的是职责。接口隔离原则是基于接口设计考虑。 #依赖反转原则(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角度来总结的。 软件设计原则的目的是 代码复用性、代码可扩展性、代码可维护性。 常见的软件设计原则分为:单一职责、开闭原则、接口隔离、里式替换、迪米特原则、依赖倒置原则。 单一职责 一个类或者方法只有一个职责,只有一个引起它变化的原因。 里氏代换原则 里氏代换原则(Liskov Substitution Principle LSP)是面向对象设计的基本原则之一。里氏代换原则中说,任何基类可以出现的地方,子类一定可以出现。 里氏代换原则是对“开-闭”原则的补充。实现“开-闭”原则的关键步骤就是抽象化。而基类与子类的继承关系就是抽象化的具体实现,所以里氏代换原则是对实现抽象化的具体步骤的规范。 如果有些场景下,不能严格按照软件设计原则来实现,起码的隔离性要求还是要满足的,这样才能保证在后续修改时控制影响面,避免改动牵一发而动全身。

    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) - 定义:一个类应该只负责一个功能领域中的相关职责。 3. 里氏替换原则(Liskov Substitution Principle, LSP) - 定义:子类必须能够替换其基类并保持软件的正确性。 下面我将通过Java代码示例来说明SOLID原则中的每一项原则如何应用。请注意,这些例子是为了演示目的而简化的,实际项目可能会更复杂。 1. } } class ShapeDrawer { public void drawShape(Shape shape) { shape.draw(); } } 3.

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

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

    这是Bertrand Meyer在《面向对象软件构造》(Object-Oriented Software Construction)提出,它给软件设计提出极高要求:不修改代码,对扩展开放。 它是为软件实体的未来事件而制定的对现行开发设计进行约束的一个原则3 变化的类型 3.1 逻辑变化 只变化一个逻辑,不涉及其它模块。如原算法a*b+c,要修改为a*b*c,那就直接修改原有类中的方法,但前提条件:所有依赖或关联类都按相同逻辑处理。

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

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

    作者:yangwq 博客:https://yangwq.cn # 前言 软件设计是一门关注长期变化的学问,日常开发中需求不断变化,那我们该怎么编写出可以支撑长期变化的代码呢? 个人认为设计原则软件设计的基石之一,所有语言都可以利用设计原则开发出可扩展性、可维护性、可读性高的项目,学好设计原则,就等于我们拥有了指南针,不会迷失在各个设计模式的场景中。 郑晔老师的《软件设计之美》指出:设计模式是在特定问题上应用设计原则的解决方案。我们可以类比设计原则是心法,设计模式是招式,两者相辅相成,虽然脱离对方都能使用,但是不能融会贯通。 O(Open–closed principle,OCP):开放-关闭原则3. L(Liskov Substitution Principle,LSP):里氏替换原则; 4. 实践过程中怎么编写满足KISS原则的代码?以下几点供大家参考: 1. 不要重复造轮子,复用已有的工具; 2. 方法写得越小越好; 3. 不要使用同事可能不懂的技术来实现代码。

    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
  • 来自专栏黑光技术

    一些软件设计原则

    以后面我们会面向对象的SOLID原则中会提到我们的依赖倒置原则,就是这个原则的的另一种样子。 我们的程序员或是架构师在设计系统的时候,会考虑很多扩展性的东西,导致在架构与设计方面使用了大量折衷,最后导致项目失败。 最后,本来一个1年的项目做了3年。 实现关注点分离的方法主要有两种,一种是标准化,另一种是抽象与包装。 第二种方法是使用DIP(依赖倒置原则)和ISP(接口分隔原则)设计原则。 无环依赖原则(ADP)为我们解决包之间的关系耦合问题。在设计模块时,不能有循环依赖。 再回过头来了回顾一下这些原则,相信你会有一些自己的心得。 有适度地去实践一下。 Goto第 3步。 我相信可能还会有其实一些原则,欢迎大家提供。 看完本文有收获?

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

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

    如果我认为这些天 SOLID 原则没有用,那么我会用什么来代替它们呢?任何一套原则都适用于所有软件吗?我们所说的原则是什么意思? 我相信软件的某些特性或特征使它成为一种乐趣。 特性高于原则¶ 当我开始对 SOLID 的五项原则做出回应时,我设想用我认为更有用或更相关的东西来替换每一项。我很快意识到原则的想法本身是有问题的。原则就像规则:你要么顺从,要么不顺从。 例如,虽然“做好一件事”的 Unix 哲学听起来像单一职责原则,但前者是关于你如何使用代码,而后者是关于代码本身的内部结构。 3 要分层,特性应该为初学者提供指导——这是易于表达的结果——并为那些发现自己想要更深入地探索软件本质的更有经验的人提供细微差别。 单一目的与单一职责 ¶ 乍一看,这看起来像是单一职责原则 (SRP),对于 SRP 的某些解释,存在一些重叠。但“做好一件事”是一种由外而内的观点;它具有特定、明确和全面的目的。

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

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

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

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

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

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

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

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

    软件设计中,复杂性下沉(Complexity Sink)是一个关键概念,它指导开发者如何合理分配和管理软件系统中的复杂性。本文将深入探讨复杂性下沉的概念、它的重要性以及如何在实际项目中有效实施。 3. 服务导向架构 在服务导向架构(SOA)中,可以通过微服务等技术将复杂性分布到不同的服务中。 4. 重构和代码审查 定期重构代码,确保复杂性适当下沉。 结论 复杂性下沉是软件设计中的一个重要原则,它帮助开发者合理地管理和分配系统中的复杂性。 通过层次化设计、封装和抽象,以及服务导向架构,我们可以有效地实施这一原则,从而提高软件的可维护性、稳定性和扩展性。

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

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

    忆往昔,学习软件设计原则的时候还是在大学,那时候编程入坑不深, 只觉得可学可不学,毕竟课程有些无聊,看今朝,是自己年轻了! ? 一、UML 图 不要觉得奇怪为什么不讲软件设计原则而说到了 UML 图,因为软件设计原则软件设计模式中你讲到最多的便是利用类图来表示 类与类之间的关系,因此我们需要 先会看,再会理,最后再来写! 3)类图的表示 类图的表示是使用包含类名(className)、属性(field)和方法(method)且带有分割线的矩形来表示,格式如下: ? 示例如下: ? 微信搜:小菜良记 更多干货值得关注 二、软件设计原则 上面铺垫了那么多知识,主角终于可以上场了。我们也不卖关子了,直接来看下我们将要了解到的软件设计原则: ? 看完代码我们改变的只有增加了 四边形类 和修改了 正方形类,这样子我们使用扩容方法的时候需要传的是 长方形类,而 正方形类 不继承与 长方形类,扩容这个方法不适用,因此满足了里氏代换原则3.

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

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

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

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

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

    1 开闭原则的定义 开闭原则是Java世界里最基础的设计原则,它指导我们如何建立一个稳定的、灵活的系统,先来看开闭原则的定义: Software entities like classes,modules 我们做一件事情,或者选择一个方向,一般需要经历三个步骤:What——是什么,Why——为什么,How——怎么做(简称3W原则,How取最后一个w)。 对于开闭原则,我们也采用这三步来分析,即什么是开闭原则,为什么要使用开闭原则,怎么使用开闭原则。 开闭原则告诉我们应尽量通过扩展软件实体的行为来实现变化,而不是通过修改已有的代码来完成变化,它是为软件实体的未来事件而制定的对现行开发设计进行约束的一个原则3 实例 课程接口 ? Java 课程实现类 ? 测试类 ? ?

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

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

    38100编辑于 2025-04-05
领券