【笔记】软件工程设计原则

【笔记】软件工程设计原则

每次看到这些 principles, 总能多一些体会.

单一职责原则(Simple responsibility pinciple, SRP).

这在 Unix 文化中展现的淋漓尽致. 提炼职责是关键, 提炼重复的代码, 提炼相似的业务, 乃至提炼对领域模型的抽象.

依赖倒置原则(Dependence Inversion Principle, DIP).

Program to an interface, not an implementation. 上层不依赖底层的实现, 接口的设计很重要.

合成/聚合复用原则(Composite/Aggregate Reuse Principle, CARP).

尽量使用聚合/组合, 而非继承. 继承带来了更多的复杂度, 而且组件形式的代码更易复用.

开-闭原则(Open-Closed Principle, OCP).

对扩展开放, 对修改关闭. 举个例子, 增加功能时只需要对模块进行扩展, 保持模块的稳定性, 无需修改模块的内部实现. 这是 OO 的基础.

里氏代换原则(Liskov Substitution Principle, LSP).

继承子类可以替换基类, OO的多态与继承的基础.

接口隔离原则(Interface Segregation Principle, ISP).

一个类对另外一个类的依赖建立在最小的接口上, 面向接口的设计, 同时努力避免太多依赖.

迪米特法则(Law of Demeter, LoD).

又叫做最少知识原则(Least Knowledge Principle, LKP). 一个对象应当对其他对象了解的越少越好. 跟 ISP 的思想比较类似.

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏阮一峰的网络日志

每行字符数(CPL)的起源

前几天,我收到网友小龙的Email。 他想与我讨论一个问题: "各种计算机语言的编码风格,有的建议源码每行的字符数(characters per line)不...

3546
来自专栏JAVA高级架构

我是怎样教媳妇面向对象编程的

简介 我老婆 Farhana 想要继续软件开发生涯(之前因为我们的第一个孩子出生,她不得不放弃)。我已经有了一些软件设计和开发的经验,所以这几天我就在试着帮助她...

2608
来自专栏二进制文集

吐槽下《MongoDB 实战》(第二版)的翻译

最近在研究 Mongo,买了华中科技大学出版社的《MongoDB 实战》第二版,但是在看了一个小时后就发现,全书的翻译满满的槽点,不吐不快。

1903
来自专栏Create Sun

设计模式------设计原则

前言: 推荐几本相关的书: (1)Head First Design Patterns 曾经买Head First系列的时候买的一本书,是java语言的案例,但...

3428
来自专栏程序人生

[技术] 谈谈编程思想

这段时间又攒了很多答应了,但还未动手的文章。大概一两周前,有个读者留言:「程序君,能发篇文章有关编程思想的吗?我是编程初学者,对编程思想没啥概念,求传授点经验!...

3736
来自专栏JackieZheng

漫谈可视化Prefuse(六)---改动源码定制边粗细

可视化一路走来,体会很多;博客一路写来,收获颇丰;代码一路码来,思路越来越清晰。终究还是明白了一句古话:纸上得来终觉浅,绝知此事要躬行。   跌跌撞撞整合了个...

2088
来自专栏非著名程序员

白话设计模式六大原则

? 原文链接: http://www.jianshu.com/p/a489dd5ad1fe 前言 不管你是一个android程序员还是ios,后台程序员,...

2405
来自专栏Ryan Miao

java设计模式学习(-)

在我目前看来博客的作用就是笔记了,所谓的原创也仅仅是复制了别人的东西实践了一下,但为了学习记忆确实要记录下来。在这里感谢网络各处的资源,原谅我对资源的索取。 接...

3449
来自专栏张善友的专栏

面向对象设计的SOLID原则

S.O.L.I.D是面向对象设计和编程(OOD&OOP)中几个重要编码原则(Programming Priciple)的首字母缩写。 SRP The Sin...

2596
来自专栏進无尽的文章

面向对象编程中的六大原则

1. 单一职责原则(Single Responsibility Principle) 2. 里氏替换原则(Liskov Substitution Prin...

1032

扫码关注云+社区

领取腾讯云代金券