首页
学习
活动
专区
圈层
工具
发布
    • 综合排序
    • 最热优先
    • 最新优先
    时间不限
  • 来自专栏互联网大杂烩

    6设计原则

    打算用一句话概括每一个设计原则 单一职责原则 一个类只负责一项职责,有且仅有一个原因引起类的变更。 里氏替换原则 所有引用基类的地方必须能透明地使用其子类对象。 依赖倒置原则 高层模块不应该依赖低层模块,两者都应该依赖其抽象,抽象不依赖细节,细节应该依赖抽象。 也就是面向接口编程。 接口隔离原则 类间依赖应该建立在最小接口上。 开闭原则 一个软件实体如类,模块和函数,应该对扩展开放,对修改关闭。

    44430发布于 2018-08-22
  • 来自专栏烟草的香味

    6设计原则之开闭原则

    开闭原则的定义 开闭原则的定义: 一个软件实体,如类、模块和函数应该对扩展开放,对修改关闭.即一个软件实体应该通过扩展来实现变化,而不是通过修改已有的代码来实现变化. 开闭原则的好处 开闭原则是一个最基本的原则,另外五个原则都是开闭原则的具体形态,是指导设计的工具和方法,而开闭原则才是精神领袖. 开闭原则有利于进行单元测试 开闭原则可以提高复用性 开闭原则可以提高可维护性 面向对象开发的要求 开闭原则的使用 1.抽象约束 通过接口或抽象类约束扩展,对扩展进行边界限定,不允许出现在接口或抽象类中不存在的 将相同的变化封装到一个接口或抽象类中 将不同的变化封装到不同的接口或抽象类中 不能有两个不同的变化出现在同一个接口或抽象类中.封装变化,找出预计的变化或不稳定的点,为这些变化点创建稳定的接口,准确的讲是封装可能发生的变化.23个设计模式都是从各个不同的角度对变化进行封装的 . ---- 开闭原则也只是一个原则,实现拥抱变化的方法很多,并不局限于这6设计原则,但是遵循着6设计原则基本上可以应对大多数变化.

    1.5K50发布于 2019-07-25
  • 来自专栏代码世界

    6设计原则总结

    6设计原则总结 一、单一职责原则  单一职责原则:英文名称是Single Responsiblity Principle,简称是SRP。定义:应该有且仅有一个原因引起类的变更。 对于单一职责原则,接口一定要做到单一职责,类的设计尽量做到只有一个原因引起变化。 开放封闭原则告诉我们应尽量通过扩展软件实体的行为来实现变化,而不是通过修改已有的代码来完成变化,它是为软件实体的未来事件而制定的对现行开发设计进行约束的一个原则。    一个展示数据的列表,按照原有的需求是6列,突然有一天要增加1列,而且这一列要跨N张表,处理M个逻辑才能展现出来,这样的变化是比较恐怖的,但还是可以通过扩展来完成变化,这就要看我们原有的设计是否灵活。 其次,开闭原则是最基础的一个原则,前面介绍的原则都是开闭原则的具体形态,也就是说前五个原则就是指导设计的工具和方法,而开闭原则才是其精神领袖。

    1K90发布于 2018-04-12
  • 来自专栏烟草的香味

    6设计原则之接口隔离原则

    接口隔离原则的定义 什么是接口. 接口隔离原则的实现 比如现在有一个人,他身兼数职,是一个老师,要教书,是一个学生,要学习,类图如下: ? 在使用时的时候通过接口调用.接口是我们设计时对外提供的契约,通过分散定义多个接口,可以预防未来变更的扩散,提高系统的灵活性和可维护性. 接口的规范约束 接口要尽量小,这是接口隔离原则的核心定义,但是"小"是有限度的,首先就是不能违背单一职责原则. ,接口的设计粒度越小,系统越灵活.但是,灵活的同时也带来了结构的复杂化,开发难度增加,可维护性降低,所以接口设计一定要注意适度. ---- 接口隔离原则就是对接口的定义,同时也是对类的定义,接口和类尽量使用原子接口或原子类来组装

    92010发布于 2019-07-25
  • 来自专栏烟草的香味

    6设计原则之里氏替换原则

    降低代码的灵活性.子类必须拥有父类的属性和方法,让子类自由的世界中多了些约束 增强了耦合性.当父类的常量、变量和方法被修改时,需要考虑子类的修改,有时更会带来非常糟糕的结果--大段代码需要重构 里氏替换原则的定义 里氏替换原则的规范(继承的规范) 1.子类必须完全实现父类的方法 例如有一个打枪的游戏,类图如下 ? 其 Soldier 代码如下 ? 而是重载,因为输入参数不同 父类的参数范围小,当调用子类 doSomething方法时,若参数为HashMap调用父类方法,若为Map调用子类方法 要是反过来,子类的 参数比父类范围下,就违背了里氏替换原则 4.覆写或实现父类的方法是输出结果可以被缩小 这个也不难理解,也就是说父类方法返回的是Map时,子类可以返回HashMap 但是反过来,父类返回的是HashMap,而子类返回Map类型就违背了里氏替换原则 采用里氏替换原则的好处 增强程序的健壮性,版本升级是也可以保持非常好的兼容性.即使增加子类,原有的子类还可以继续运行.在实际项目中,每个子类对应不同的业务含义,使用父类作为参数,传递不同的子类完成不同的业务逻辑

    87220发布于 2019-07-25
  • 来自专栏全栈程序员必看

    设计模式之6原则(6)开闭原则

    开闭原则(OCP) 是 面向对象设计中“可复用设计”的基石,是面向对象设计中最重要的原则之中的一个,其他非常多的设计原则都是实现开闭原则的一种手段。 开闭原则中“开”,是指对于组件功能的扩展是开放的,是同意对其进行功能扩展的;开闭原则中“闭”,是指对于原有代码的改动是封闭的,即不应该改动原有的代码。 遵循开闭原则设计出的模块具有两个主要特征: (1) 对于扩展是开放的(Open for extension)。这意味着模块的行为是能够扩展的。 作为 系统设计的抽象层,要预见全部可能的扩展,从而使得在不论什么扩展情况下,系统的抽象底层不需改动;同一时候,因为能够从抽象底层导出一个或多个新的详细实现,能够改变系统的行为,因此系统设计对扩展是开放的 这就要求我们在设计的时候,要很清楚地了解用户需求,推断需求中包括的可能的变化,从而明白在什么情况下使用开闭原则

    67421编辑于 2022-07-09
  • 来自专栏烟草的香味

    6设计原则之依赖倒置原则

    依赖倒置原则的定义 依赖倒置原则的原始定义如下: High level modules should not depend upon low level modules. 依赖倒置原则在Java语言中表现为: 模块间的依赖通过抽象产生,实现类之间不发生直接依赖,其依赖关系是通过接口或抽象类产生的 接口或抽象类不依赖于实现类 实现类依赖接口或抽象类 依赖倒置原则的好处 采用依赖倒置原则可以减少类间的耦合性 任何类都不应该从具体类派生 尽量不要覆写基类的方法 结合里氏替换原则(父类出现的地方,子类就可以出现),例如,接口负责定义public属性和方法,并且声明与其他对象的依赖关系,抽象类负责公共构造部分的实现 ,实现类精确的实现业务逻辑同时在适当的时候对父类进行细化 ---- 依赖倒置原则6设计原则中最难以实现的原则,他是实现开闭原则的重要途经,依赖倒置原则没有实现,就别想实现对扩展开放,对修改关闭.在项目中 ,只要记住是"面向接口编程"就基本抓住了依赖倒置原则的核心

    76030发布于 2019-07-25
  • 来自专栏小鑫同学编程历险记

    【程序设计6设计原则之接口隔离原则

    背景: 在实际的业务开发中往往会因为初期的设计不合理,使得接口中定义了众多方法,而这些接口在实现类中又并不需要全部实现。 这样的接口定义是不利于扩展的,也将对后期的维护带来困扰,我们将通过示例来演示符合接口隔离原则带来的好处。 概念: 接口隔离原则的定义: 客户端不应该被迫依赖于它不适用的方法 接口隔离原则的要求: 将臃肿庞大的接口拆分成更小的和更加具体的接口,保证客户端只得到自己需要的方法 案例: 需求: 设计HomePage 页面 功能支持点击事件:可以跳转到EditPage页面 功能支持双击事件:可以双击后退出程序 设计EditPage页面 功能支持双击事件:可以双击后选择文本 功能支持长按事件:可以长按后选择全部文本 违反原则实现 按照合理的设计进行符合接口隔离原则的拆分对实现代码高内聚,低耦合将变得尤为重要。

    47520编辑于 2022-12-26
  • 来自专栏烟草的香味

    6设计原则之单一职责原则

    单一职责原则 如果有一个用户管理类,类图如下 ? 我想,任谁也能看的出这个接口设计的有问题,用户的属性和用户的行为没有分开,应该把用户的信息抽取成一个业务对象,把用户的行为抽取成一个业务对象,按照这个思路对类图进行修正,如下图所示 ? 其实,在实际使用中我们更倾向于使用两个不同的接口: 一个IUserBO,一个IUserBiz 单一职责原则定义 应该有且仅有一个原因引起类的变更 单一职责原则的好处: 类的复杂性降低,实现什么职责都有清晰明确的定义 可读性提高了,当然更容易维护了 变更引起的风险降低.变更是必不可少的,如果接口的单一职责做的好,一个接口修改只对相应的实现类有影响,对其他类无影响,这对系统的扩展性、维护性都有非常大的帮助 ---- 单一职责原则适用于接口 、类,同样也适用于方法. ---- 单一职责原则是非常优秀的,但是在实际使用中受很多因素的制约 建议,接口一定要做到单一职责,类的设计尽量做到只有一个原因引起变化

    48730发布于 2019-07-25
  • 来自专栏全栈程序员必看

    Python6设计原则

    内容总览 六大设计原则都有哪些 一、单一职责原则 二、里氏替换原则 三、依赖倒置原则 四、接口隔离原则 五、迪米特法则 六、开放封闭原则 内容详解 一、单一职责原则 单一职责原则:英文名称是Single 对于单一职责原则,接口一定要做到单一职责,类的设计尽量做到只有一个原因引起变化。 开放封闭原则告诉我们应尽量通过扩展软件实体的行为来实现变化,而不是通过修改已有的代码来完成变化,它是为软件实体的未来事件而制定的对现行开发设计进行约束的一个原则。    一个展示数据的列表,按照原有的需求是6列,突然有一天要增加1列,而且这一列要跨N张表,处理M个逻辑才能展现出来,这样的变化是比较恐怖的,但还是可以通过扩展来完成变化,这就要看我们原有的设计是否灵活。 其次,开闭原则是最基础的一个原则,前面介绍的原则都是开闭原则的具体形态,也就是说前五个原则就是指导设计的工具和方法,而开闭原则才是其精神领袖。

    61830编辑于 2022-07-21
  • 来自专栏软件研发

    架构设计模式—6设计原则

    架构设计模式—6设计原则架构设计是软件开发中非常重要的一环,良好的架构可以提高软件系统的可维护性、可扩展性和可重用性。在架构设计过程中,遵循一定的设计原则可以帮助我们构建合理的架构。 本文介绍6大常用的架构设计原则,他们是:单一职责原则(Single Responsibility Principle, SRP) 单一职责原则要求一个类或模块只负责完成一项职责。 以上6设计原则是架构设计过程中常用的准则,不同的原则可以结合使用,根据具体的应用场景进行选择。遵循这些原则可以帮助我们构建高质量的软件系统。 下面是一个简单的示例代码,使用了单一职责原则和依赖倒转原则:javaCopy code// 单一职责原则示例public class User { private String name; 这样就符合了开放封闭原则,系统对于扩展是开放的,对于修改是封闭的。这样设计的好处是,我们可以方便地添加新的形状,而不会影响到已有的代码功能。

    2.4K41编辑于 2023-11-02
  • 来自专栏一个会写诗的程序员的博客

    架构设计模式—6设计原则

    架构设计原则 6设计原则 Single Responsibility Principle  : 单一职责原则 Liskov Substitution Principle : 里氏替换原则 6 内容耦合: 这是最高程度的耦合,也是最差的耦合。当一个模块直接使用另一个模块的内部数据,或通过非正常入口而转入另一个模块内部。 内聚性又称块内联系。 6 功能内聚: 这是最强的内聚,指模块内所有元素共同完成一个功能,缺一不可。与其他模块的耦合是最弱的。 image 1、GOF在书中说:设计模式是对被用来在特定场景下解决一般设计问题的类和相互通信的对象的描述; 设计模式就是不断反省,将软件开发经验抽象积累成解决问题的预案。 3、设计模式中广泛遵循了两条设计原则:面向接口编程,而不是实现;优先使用组合,而不是继承。 ........

    2.2K60发布于 2019-07-04
  • 来自专栏小程序深入

    设计模式-6原则

    既然不可能完全封闭,设计人员必须对于他设计的模块应该对哪种变化封闭做出选择。 开放封闭原则(Open Closed Principle)即为解决这些问题而产生,它强调的是你设计的模块应该从不改变。 我们在运用里氏代换原则时,尽量把父类设计为抽象类或者接口,让子类继承父类或实现父接口,并实现在父类中声明的方法,运行时,通过调用子类实例我们可以很方便地扩展系统的功能,同时无须修改原有子类的代码,增加新的功能可以通过增加一个新的子类来实现 6. 接口隔离原则(ISP Interface Segregation Principle)概念 A、客户端不应该依赖它不需要的接口。 B、类间的依赖关系应该建立在最小的接口上。 我们在做系统设计时也需要考虑对系统之间或模块之间的接口采用定制服务。采用定制服务就必然有一个要求:只提供访问者需要的方法 接口的设计粒度越小,系统越灵活,这是不争的事实。

    68221编辑于 2022-07-25
  • 来自专栏小樱的经验随笔

    设计模式六大原则6):开闭原则

    开闭原则是面向对象设计中最基础的设计原则,它指导我们如何建立稳定灵活的系统。 在仔细思考以及仔细阅读很多设计模式的文章后,终于对开闭原则有了一点认识。其实,我们遵循设计模式前面5大原则,以及使用23种设计模式的目的就是遵循开闭原则。 在上图中,设计1、设计2属于良好的设计,他们对六项原则的遵守程度都在合理的范围内;设计3、设计4设计虽然有些不足,但也基本可以接受;设计5则严重不足,对各项原则都没有很好的遵守;而设计6则遵守过渡了,设计 5和设计6都是迫切需要重构的设计。          到这里,设计模式的六大原则就写完了。主要参考书籍有《设计模式》《设计模式之禅》《大话设计模式》以及网上一些零散的文章,但主要内容主要还是我本人对这六个原则的感悟。

    1.1K70发布于 2018-04-08
  • 来自专栏全栈程序员必看

    设计模式六大原则6):开闭原则

    开闭原则是面向对象设计中最基础的设计原则。它指导我们怎样建立稳定灵活的系统。开闭原则可能是设计模式六项原则中定义最模糊的一个了,它仅仅告诉我们对扩展开放,对改动关闭,但是究竟怎样才干做到对扩展开放。 在细致思考以及细致阅读非常多设计模式的文章后,最终对开闭原则有了一点认识。 事实上。我们遵循设计模式前面5大原则,以及使用23种设计模式的目的就是遵循开闭原则。 也就是说,仅仅要我们对前面5项原则遵守的好了,设计出的软件自然是符合开闭原则的。 设计3、设计4设计尽管有些不足,但也基本能够接受;设计5则严重不足,对各项原则都没有非常好的遵守;而设计6则遵守过渡了,设计5和设计6都是迫切须要重构的设计。 到这里,设计模式的六大原则就写完了。主要參考书籍有《设计模式》《设计模式之禅》《大话设计模式》以及网上一些零散的文章。但主要内容主要还是我本人对这六个原则的感悟。

    48001编辑于 2022-07-07
  • 来自专栏小鑫同学编程历险记

    【程序设计6设计原则之依赖倒置

    依赖倒置原则(Dependence Inversion Principle,DIP): 代码设计要依赖于抽象接口,不要依赖于具体实现。 通过面向抽象的编程方式来降低类之间的耦合,便于扩展。 WeightLuckyDraw(); const winners2 = weightLuckyDraw.prize(users, 3); console.log(winners2); 【在线代码】:依赖倒置原则演示

    32930编辑于 2022-12-26
  • 来自专栏国产程序员

    面向对象的7种设计原则(6)-迪米特原则

    迪米特原则 迪米特原则(Law of Demeter)又叫最少知道原则(Least Knowledge Principle),可以简单说成:talk only to your immediate friends 迪米特法则首先强调的前提是在类的结构设计上,每一个类都应当降低成员的访问权限,也就是说,一个类包装好自己的private状态,不需要让别的类知道的字段或行为就不要公开。 面向对象的设计原则和面向对象的三大特性本就不是矛盾的。迪米特法则其根本思想,是强调了类之间的松耦合。 摘自大话设计模式: ? ? ? 注意 在类的划分上,应该创建弱耦合的类。类与类之间的耦合越弱,就越有利于实现可复用的目标。 在类的结构设计上,尽量降低类成员的访问权限。 在类的设计上,优先考虑将一个类设置成不变类。 在对其他类的引用上,将引用其他对象的次数降到最低。 不暴露类的属性成员,而应该提供相应的访问器(set 和 get 方法)。

    77640发布于 2020-08-17
  • 来自专栏JetPack

    Java设计模式6原则

    目录 单一职责原则 开放封闭原则 里式替换原则 依赖倒置原则 迪米特原则 接口隔离原则 设计模式的6原则,单一职责原则,开放封闭原则,里式替换原则,依赖导致原则,迪米特原则和接口隔离原则。 这种耦合会导致脆弱的设计,当变化发生时,设计会遭受到破坏。 如果我有5 6个类呢,那我这个包装类岂不是要很麻烦? 迪米特原则要求我们在设计系统是,应该尽量减少对象之间的交互。如果两个对象之间不必彼此直接通向,那么这两个对象就不应当发生任何直接的相互作用。 采取接口隔离原则对接口进行约束时,要注意以下几点: 接口尽量小,但是要有限度。对接口进行细化可以提高程序设计的灵活性;但是如果过小,则会造成接口数量过多,使设计复杂化。所以,一定要适度。

    39030编辑于 2022-02-09
  • 来自专栏学习笔记ol

    小谈设计模式(6)—依赖倒转原则

    小谈设计模式(6)—依赖倒转原则 专栏介绍 主要对目前市面上常见的23种设计模式进行逐一分析和总结,希望有兴趣的小伙伴们可以看一下,会持续更新的。 依赖倒转原则 依赖倒转原则(Dependency Inversion Principle,DIP)是面向对象设计中的一个重要原则,它指导着如何构建松耦合、可扩展和可维护的软件系统。 该原则由罗伯特·C·马丁(Robert C. Martin)提出。 核心思想 通过抽象来解耦高层模块和低层模块之间的依赖关系。 需要额外的设计和开发工作 在应用依赖倒转原则时,需要进行额外的设计和开发工作,包括定义抽象接口、实现具体实现类、进行依赖注入等。这会增加开发成本和工作量。 综上所述,依赖倒转原则在一定程度上可以提高代码的灵活性、可维护性和可扩展性,但也需要权衡其引入的复杂性和开发成本。在设计和开发过程中,需要根据具体的场景和需求来决定是否采用依赖倒转原则

    47120编辑于 2023-10-11
  • 来自专栏小鑫同学编程历险记

    【程序设计6设计原则之单一职责

    概念: 有且仅有一个原因引起类的变化,也就是一个类只负责一项职责的原则。 方案介绍: 如果在设计之初定义一个类中有多项职责,则应该考虑重新设计将类的粒度进行分解为多个子类,每个子类职责单一。 其实问题的原因就是在设计之初没有考虑好将来的变化为违反了单一职责的原因。 代码重构: 重新设计后的产品类: export class Product { service: IProductService; constructor(service: IProductService

    32520编辑于 2022-12-26
领券