展开

关键词

61条面向对象设计的经验原则

你不必严格遵守这些原则,违背它们也不会被处以宗教刑罚。但你应当把这些原则看成警铃,若违背了其中的一条,那么警铃就会响起。   (1)所有数据都应该隐藏在所在的类的内部。 这种类型的行为暗示着这条经验原则被违反了。   (10)把不相关的信息放在另一个类中(也即:互不沟通的行为)。p19   朝着稳定的方向进行依赖. p33   (17)尽可能地按照现实世界建模(我们常常为了遵守系统功能分布原则、避免全能类原则以及集中放置相关数据和行为的原则而违背这条原则) 。p36   (18)从你的设计中去除不需要的类。

23620

设计原则之开闭原则

StringFormatUtil.stringFormat(MSG)); } } 程序必须首先让人类理解,然后顺便让机器能执行^_^xxxx Process finished with exit code 0 总结 通过上述代码可以知道,开闭原则是是为了避免过多的修改原有的代码逻辑 ,用扩展代替修改而衍生的一个原则,不可否认,他也是所有的设计模式都想表达的一个结果,高扩展性。 开闭原则也并不是免费的。有些情况下,代码的扩展性会跟可读性相冲突。比如,我们之前举的 StringFormat格式化的例子。

18530
  • 广告
    关闭

    腾讯云精选爆品盛惠抢购

    腾讯云精选爆款云服务器限时体验20元起,还有更多热门云产品满足您的上云需求

  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    java设计原则--里氏替换原则

    缺点三:增强了耦合性,当父类的常量、变量和方法被修改时需要考虑子类的修改 里式替换作用 Java的单继承机制从总体上看是利大于弊,那么,如何让利的优势发挥最大,同时减少弊的带来的麻烦呢,于是就有了里式替换原则 ,里氏替换原则为良好的继承定义了一个规范 我们在做系统设计时,经常会定义一个接口或抽象类,然后编码实现,调用类则直接传入接口或抽象类,其实这里已经使用了里氏替换原则 举一个CS的案例: 枪的主要职责是射击 注意 在类中调用其他类时务必要使用父类或接口,如果不能使 用父类或接口,则说明类的设计已经违背了LSP原则 本文内容参考设计模式之禅,仅用于个人学习,如有不妥请联系删除

    8820

    设计原则之开闭原则(OCP)

    如何应对这些变化是开闭原则要解决的问题。开闭原则允许软件实体在不更改其代码的情况下变更其行为(变更包括改变和增加)。 插件与中间件 插件与中间件可以说必须遵守开闭原则。软件在发布后使用人员是无法修改源代码的,因此源代码设计人员需将能力开放给使用人员,就必须依赖开闭原则。 有关这方面,有人提出了 SPI 的概念,可参加以前写的API 与 SPI 与设计模式之间的关系 设计原则是设计模式的指导,设计模式是设计原则的具象。比较虚的原则需要使用比较实的模式来说明。 很多文章使用策略模式来讲解开闭原则,导致很多人认为开闭原则就是策略模式,实际上策略模式是开闭原则的一种实现而已。 按照开闭原则,应该尽量做到修改封闭。

    43030

    6大设计原则之开闭原则

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

    31750

    设计原则之依赖倒置原则(DIP)

    简介 依赖倒置原则是系统解耦的重要原则,遵循它可以让我们的系统更加健壮。 定义 依赖倒置原则(Dependency Inversion Principle)是 Robert C. Martin 提出的,原则声明了两个方面: 上层模块不应该依赖下层模块,双方都应依赖于抽象。 抽象不应依赖实现,实现应该依赖抽象。 依赖倒置原则的声明中有几个概念:上层、下层,抽象、实现。 依赖倒置原则要求在设计层间通信、交互标准时,不应依赖于某个下层,而是应该依赖于抽象,这样上下层之间就没有强耦合,如果两个实现都遵循了同样的抽象,则可以在上层无感知的情况下替换下层实现。 依赖倒置原则说明实现应该依赖于抽象,是因为实现是对抽象骨架的填充,而抽象不应依赖于实现,是因为抽象是对本质的归纳,应去掉细节的干扰。 看了上面的规则,还需要问一下依赖倒置原则倒置了什么呢? 总结 在考虑依赖倒置原则的使用时,跟单一职责原则一样,需要注意使用的粒度。如果所有的代码都符合依赖倒置原则,那就过犹不及了。 依赖倒置原则要求系统建立在抽象的基石之上,而不是实现的浮土之上。

    34010

    面向对象设计原则之开闭原则

    开闭原则是面向对象设计中“可复用设计”的基石,是面向对象设计中最重要的原则之一。 什么是开闭原则 开闭原则明确的告诉我们:软件实现应该对扩展开放,对修改关闭,其含义是说一个软件实体应该通过扩展来实现变化,而不是通过修改已有的代码来实现变化的。 为什么使用开闭原则 第一:开闭原则非常有名,只要是面向对象编程,在开发时都会强调开闭原则 第二:开闭原则是最基础的设计原则,其它的五个设计原则都是开闭原则的具体形态,也就是说其它的五个设计原则是指导设计的工具和方法 ,而开闭原则才是其精神领袖。 依照Java语言的称谓,开闭原则是抽象类,而其它的五个原则是具体的实现类。 第三:开闭原则可以提高复用性 在面向对象的设计中,所有的逻辑都是从原子逻辑组合而来,而不是在一个类中独立实现一套业务逻辑。

    23030

    SOLDI原则之DIP:依赖倒置原则

    本篇介绍软件设计原则之一DIP:依赖倒置原则。很多知识回头来看会有新的理解。看到一句话,一段文字,一个观点有了新的理解,醍醐灌顶的感觉。这种感觉像是一种惊喜。古语说:温故而知新。 DIP:依赖倒置原则 a.高层模块不应该依赖于低层模块。二者都应该依赖于抽象。 b.抽象不应该依赖于细节。细节应该依赖于抽象。 那么来看这个设计满足了DIP:依赖倒置原则的高层模块不应该依赖于低层模块,二者都应该依赖于抽象。

    6420

    CAP原则

    介绍 CAP原则是NOSQL数据库的基石。Consistency(一致性)。 Availability(可用性)。 Partitiontolerance(分区容错性)。

    34140

    设计原则之里氏替换原则(LSP)

    简介 里氏替换原则是在做继承设计时需要遵循的原则,不遵循了 LSP 的继承类会带来意想不到的问题。 思考 继承描述的是 is-a 关系,开闭原则要求我们使用继承增加功能,LSP 原则是指导我们如何继承。 如果破坏了继承原则,那么开闭原则也就无法使用。子类不按照契约设定编码,那就是在给使用者挖坑。 name){ this.name = name; } } public interface Flyable { public void fly(); } 总结 里氏替换原则是继承需要遵循的原则 遇到违反 LSP 原则的继承,有两招来解决:1. 修改实现,2。 更改设计。

    54740

    面向对象的设计原则-开闭原则

    Open-Closed Principle,"开闭原则"百科上是这么说的:一个软件实体(如类、模块、函数)应该对扩展开放,对修改关闭。 为什么? 开闭原则是面向对象设计原则中最基础的原则,可称之为原则原则,也可以说是原则的指导思想,它强调的是既稳定又灵活,在不修改源代码的情况下又增加了新功能,核心思想是面向抽象编程。 "开闭原则是抽象类,其他五大原则是具体的实现类。"对测试的影响,可以提高复用性,提高可维护性,面向对象开发的要求。 怎么用?

    14740

    设计原则:面向对象设计原则详解

    而在面向对象的设计里面,可维护性复用都是以面向对象设计原则为基础的,这些设计原则首先都是复用的原则。遵循这些设计原则可以有效地提高系统的复用性,同时提高系统的可维护性。 3)单一职责原则是 实现高内聚、低耦合的 指导方针,在很多代码重构手法中都能找到它的存在,它是最简单但又最难运用的原则,需要设计人员发现类的不同职责并将其分离,而发现类的多重职责需要设计人员具有较强的分析设计能力和相关重构经验 这里没有一个具体的金科玉律,但从实际代码开发经验上,有一些可执行性的侧面判断指标,可供参考: 类中的代码行数、函数、或者属性过多:会影响代码的可读性和可维护性,我们就需要考虑对类进行拆分; 2、原则分析: 1)如果说开闭原则是面向对象设计的目标,依赖倒转原则是到达面向设计"开闭"原则的手段..如果要达到最好的"开闭"原则,就要尽量的遵守依赖倒转原则. 可以说依赖倒转原则是对"抽象化"的最好规范! 我个人感觉,依赖倒转原则也是里氏代换原则的补充..你理解了里氏代换原则,再来理解依赖倒转原则应该是很容易的。

    11420

    设计原则之接口分离原则(ISP)

    简介 单一职责原则倾向于设计视角,接口分离原则倾向于实现视角,二者看起来非常相似,但是在某些方面还是有所区别的。 实践 在设计原则只里氏替换原则中,我们举的例子就违反了接口分离原则,这里再举一个例子说明这个原则。 与 SRP 的比较 SRP 原则说的是一个类只能有一个改变的理由,ISP 原则指的是使用方不应该依赖它不使用的方法。有的设计符合 SRP 原则却并不符合 ISP 原则。 但是原始的 Stack 设计是完全符合 SRP 原则的,push 与 pop 就是它自己的职责。 从这个例子可以看出,ISP 原则不仅仅能指导我们分离接口,还能帮助判断一个类的继承是不是合理的。 总结 接口分离原则与单一职责原则挺相近,但在某些点上是有区别的。日常编码实现某个接口、继承某个类时,问问自己,这样符合 ISP 原则么?

    74630

    设计原则

    类应该对扩展开发,对修改关闭 依赖倒置原则 要依赖抽象,不要依赖具体类 依赖倒置,倒置在哪? 在依赖倒置原则中的倒置指的是和一般的OO设计的思考方式完全相反。 最少知识原则 不要让太多类耦合在一起,免得修改系统的一部分,会影响到另外一部分。 ? ? 里氏替换原则 在代码里面, 把父类替换成它的子类, 程序的行为不会有变化, 简单地说, 子类型必须能够替换掉它们的父类型。 也正因为这个原则, 使得继承复用成为了可能, 只有当子类可以替换掉父类, 程序的功能不受到影响时,父类才能真正被复用, 而子类也能够在父类的基础上增加新的行为。 里氏替换原则为继承定义的规范: 子类必须完全实现父类的方法 子类可以有自己的新方法、新属性

    22840

    开闭原则

    设计模式六大原则之六:开闭原则。 跑题了跑题了,今天是想和大家分享设计模式最后一个原则:开闭原则。这个原则要求就是允许扩展,拒绝修改。既然上面讲到看医生,那就用一个跟看病有关的例子。 小明发话:你们说的方法都可以实现,但是总感觉不对劲,如果以后有社保四挡,还是要修改原来的代码,前 2 天设计模式老师讲的开闭原则忘记了么?里面说要对扩展开放,对修改封闭。 对于小红来说,她没理清价格变化的原因,价格变化不在于药片;小花理清了,但是实现方式差了点,以后如果新增了四挡社保,她的实现要修改原有的代码,不符合开闭原则;小明的方法就符合开闭原则,如果新增四挡社保人员 用了这个大家可能不太喜欢的看病的场景来描述这个开闭原则,不要忌讳哈,希望大家都健健康康,远离医院。 总结 重申一下:对扩展开放,对修改封闭。

    21410

    CAP原则

    CAP原则又称CAP定理,指的是在一个分布式系统中, Consistency(一致性)、 Availability(可用性)、Partition tolerance(分区容错性),三者不可得兼。

    89850

    架构原则

    缓存设计:隔离请求与后端逻辑、存储,是就近原则的一种机制。包括客户端缓存(预先下发资 源)、 Nginx缓存、本地缓存以及分布式缓存。 前瞻性设计:根据行业经验和预判,提前把可扩展性、后向兼容性设计好。 水平扩展:相比起垂直扩展,能够通过堆机器解决问题是最优先考虑的问题,系统的负载能力也 才能接近无限扩展。

    26020

    六大设计原则之`开闭原则`

    定义 开闭原则是java世界里最基础的设计原则,它指导我们如何建立一个稳定,灵活的系统。 为什么使用开闭原则 第一:开闭原则非常有名,只要是面向对象编程,在开发时都会强调开闭原则 第二:开闭原则是最基础的设计原则,其它的五个设计原则都是开闭原则的具体形态,也就是说其它的五个设计原则是指导设计的工具和方法 开闭原则是面向对象设计中最基础的设计原则,它指导我们如何建立稳定灵活的系统。 说到这里,再简要介绍下其他5项原则,它们主要是告诉我们用抽象构建框架,用实现扩展细节的注意事项而已:单一职责原则告诉我们实现类要职责单一;里氏替换原则告诉我们不要破坏继承体系;依赖倒置原则告诉我们要面向接口编程 而开闭原则是总纲,他告诉我们要对扩展开放,对修改关闭。 最后说明一下如何去遵守这六个原则

    27720

    设计原则

    JavaScript用得上设计原则有单一职责原则、里氏替换原则、依赖倒置原则、接口隔离原则、合成复用原则和最少知识原则等。本文将选取三个常用的阐述之。 需要明确的是:设计原则只是一种指导,没有哪条原则是在实际开发中必须遵守的。但善用原则,可以帮助更好地设计代码。 1 单一职责原则(srp) 概述 定义:就一个类而言,应该仅有一个引起它变化的原因。 在JavaScript中,需要用到类的场景并不太多,单一职责原则更多地是被运用在对象或者方法级别上。 单一职责原则(SRP)的职责被定义为“引起变化的原因”。 2 最少知识原则(lkp) 概述 最少知识原则(LKP,迪米特法则)说的是一个软件实体应当尽可能少地与其他实体发生"关系"。 在面向对象的程序设计中,开放封闭原则(OCP)是最重要的一条原则。很多时候,一个程序具有良好的设计,往往说明它是符合开放封闭原则的。

    25520

    相关产品

    • 数据库专家服务

      数据库专家服务

      腾讯数据库专家服务(DES)为您提供专业化的数据库服务。仅需提交您的具体问题和需求,即可获得腾讯云数据库专家的专业支持,助您解决各类专业化数据库问题。

    相关资讯

    热门标签

    扫码关注云+社区

    领取腾讯云代金券