软件设计模式简要总结
设计模式(Design pattern)是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。使用设计模式是为了可重用代码、让代码更容易被他人理解、保证代码可靠性。 毫无疑问,设计模式于己于他人于系统都是多赢的;设计模式使代码编制真正工程化;设计模式是软件工程的基石脉络,如同大厦的结构一样。
设计框架
设计原则
此原则是由Bertrand Meyer提出的。原文是:“Software entities should be open for extension,but closed for modification”。就是说模块应对扩展开放,而对修改关闭。模块应尽量在不修改原(是“原”,指原来的代码)代码的情况下进行扩展。
2. 里氏代换原则
里氏代换原则是由Barbara Liskov提出的。如果调用的是父类的话,那么换成子类也完全可以运行。
可以说:里氏代换原则是继承复用的一个基础。
3. 依赖倒转原则
抽象不应该依赖于细节,细节应当依赖于抽象。
要针对接口编程,而不是针对实现编程。
传递参数,或者在组合聚合关系中,尽量引用层次高的类。
主要是在构造对象时可以动态的创建各种具体对象,当然如果一些具体类比较稳定,就不必在弄一个抽象类做它的父类,这样有画蛇添足的感觉
4. 合成/聚合复用原则
5. 接口隔离原则
定制服务的例子,每一个接口应该是一种角色,不多不少,不干不该干的事,该干的事都要干。
最少知识原则
也叫迪米特法则。不要和陌生人说话,即一个对象应对其他对象有尽可能少的了解。
创建型模式:单例模式、抽象工厂模式、建造者模式、工厂模式、原型模式。
结构型模式:适配器模式、桥接模式、装饰模式、组合模式、外观模式、享元模式、代理模式。
行为型模式:模版方法模式、命令模式、迭代器模式、观察者模式、中介者模式、备忘录模式、解释器模式、状态模式、策略模式、职责链模式、访问者模式。
软件设计模式简要总结相关推荐
- 【系统架构设计师】软考高级职称,一次通过,倾尽所有,2016年下半年系统架构设计师考试论文真题(论述软件设计模式技术及应用)
[系统架构设计师]软考高级职称,一次通过,倾尽所有,看完这篇就够了,学习方法和技巧这里全都有. 2016年下半年系统架构设计师考试论文真题(论述软件设计模式技术及应用) 论软件设计模式及其应用 软件设 ...
- 软件设计模式-7种设计原则总结
7 种设计原则是软件设计模式必须尽量遵循的原则,各种原则要求的侧重点不同.其中,开闭原则是总纲,它告诉我们要对扩展开放,对修改关闭:里氏替换原则告诉我们不要破坏继承体系:依赖倒置原则告诉我们要面向接口 ...
- [摘抄]软件设计模式的几个原则
原文地址:软件设计模式的几个原则 模式是一种对现实世界的概念抽象,建筑模式,设计模式,营销模式,商业运作模式各行各业都有自己的模式. 这里说的设计模式是软件设计里的模式,主要是指面向对象的软件设计.遵 ...
- 探索软件设计模式(二)
我们在前面的文章中已经介绍了一些软件的设计模式,并给出了一些非软件的例子.下面,让我们继续完成软件设计模式的探索,来看看这些模式中的行为模式及实例. 行为模式 作者总结了十一种行为模式.这些模式可以在 ...
- 软件设计模式—命令模式
前篇--软件设计模式-基础 前篇--软件设计模式-三种工厂模式 前篇--软件设计模式-装饰者模式 前篇--软件设计模式-单例模式 前篇--软件设计模式-原型模式 命令模式是对象行为型模式 目录 1. ...
- 软件设计模式从何而来?------“抄袭来的” 设计模式
博主:爱码叔 个人博客站点: icodebook 公众号:漫话软件设计 专注于软件设计与架构.技术管理.擅长用通俗易懂的语言讲解技术.对技术管理工作有自己的一定见解.文章会第一时间首发在个站上,欢迎大 ...
- 软件设计模式--软件设计演变过程
一.写这篇文章的原因 1.C语言能够使用设计模式吗?? 2.为什么要有软件设计模式?不学行不行? 3.怎么能够成为一个好的开发者,为什么有经验的人比你开发快,代码架构还好? 4.C++作为C的扩展,为 ...
- 系统架构师论文-论软件设计模式的应用
论软件设计模式的应用 [摘要] 本人2004年有幸参加了中国石油集团的高性能数控测井系统项目的开发研制工作.该系统是在当前测井成套测井装备的基础上,为了满足高精度,高性能,高效率的要求开发的测井系统. ...
- 【软件设计模式】常用的设计模式的介绍
软件设计模式 概念: 是一套反复使用的.多数人知晓的.经过分类编目的代码设计经验总结.是一种用于对软件系统中不断重现的设计问题的解决方案进行文档化的技术,是一种共享专家设计经验的技术. 目的: 在特定 ...
最新文章
- Oracle学习之三 程序控制结构
- 推荐给开发和设计人员的iPad应用
- 中级统计师基础知识中计算机,【2014年中级统计师《统计基础理论及相关知识》预习:计算机操作系统】- 环球网校...
- 吴裕雄 Bootstrap 前端框架开发——Bootstrap 排版:设定文本对齐,段落中超出屏幕部分文字自动换行...
- synchronized 的理解
- Flink on Zeppelin 流计算处理最佳实践
- 第二章 生成、打包、部署和管理应用程序及类型
- i.MX283A移植mt7601--小米随身wifi
- 硬禾课堂 - 一分钟焊接小技巧
- 模拟退火(SA)算法实例介绍(JAVA)
- 优先队列(priority_queue)总结
- laravel应用密钥
- 激光投影仪与普通投影仪有什么区别?应该怎么购买?
- 异步加载loading
- C语言中getch()的用法
- Java并发常见面试题(二)
- 中国互联网流行文化缔造者百度贴吧,如何拥抱新时代?
- CSDN自动回复灌水乐园帖子-httpClient篇
- 51单片机入门——STC89C52RC控制步进电机进行转动、调速
- deepfakes超进化!反复变脸行云流水,完全没有PS痕迹,推特10万点赞
热门文章
- eNSP 模拟 calico 跨网段 bgp 网络
- 朋友圈裂变营销活动怎么做?有什么玩法?裂变海报?积分
- Python开源项目之蜘蛛纸牌
- 创龙Xilinx Zynq-7000系列SoC高性能处理器开发板的RTC座、SMA端子
- 吉大计算机学院周丰丰,中国科学技术协会 综合 英才计划计算机学科工作委员会赴吉林调研...
- 为uni-cloud(Dcloud国产之辉)声明!
- 轨道交通信号系统的可靠性与安全性
- Android 6.1 短信彩信导入 Android 7.1.1
- 当老板提出不合理要求时该怎么回?
- Apple M1与英特尔芯片:两个强大处理器的比较