设计模式系列(一)简介
发布日期:2021-07-23 22:22:36 浏览次数:3 分类:技术文章

本文共 1462 字,大约阅读时间需要 4 分钟。

一:设计模式起源

来自维基百科:

建筑师在1977/79年编制了一本汇集设计模式的书,但是这种设计模式的思想在建筑设计领域里的影响远没有后来在软件开发领域里传播的广泛。

和在1987年,利用克里斯托佛·亚历山大在建筑设计领域里的思想开发了设计模式并把此思想应用在Smalltalk中的图形用户接口(GUI)的生成中。一年后在他的博士毕业论文中开始尝试把这种思想改写为适用于软件开发。与此同时James Coplien 在1989年至1991年也在利用相同的思想致力于C++的开发,而后于1991年发表了他的著作Advanced C++ Programming Styles and Idioms。同年Erich Gamma 得到了博士学位,然后去了美国,在那与Richard Helm, Ralph Johnson ,John Vlissides 合作出版了《》(Design Patterns - Elements of Reusable Object-Oriented Software) 一书,在此书中共收录了 23 種设计模式

这四位作者在软件开发领域里以“四人帮”(英語,Gang of Four,简称GoF)而闻名,并且他们在此书中的协作导致了软件设计模式的突破。有時,GoF也會用於代指《设计模式》这本书

----------------------------------

关于设计模式,

最出名的一本书:《Design Patterns: Elements of Reusable Object-Oriented Software》

由 Erich Gamma、Richard Helm、Ralph Johnson 和 John Vlissides 合著(Addison-Wesley,1995)

这几位作者常被称为"四人组(Gang of Four)

 

二:分类

维基百科上对于设计模式的分类不仅限于这三大类23种,不过暂时先了解这23种吧

设计模式总体分为三大类

创建者模式(5种):抽象工厂模式,工厂方法模式,建造者模式,单例模式,原型模式

结构型模式(7种):适配器模式,桥接模式,组合模式,外观模式,装饰者模式,享元模式,代理模式

行为型模式(11种):责任链模式,命令模式,解释器模式,迭代模式,中介者模式,备忘录模式,观察者模式,状态模式,策略模式,模板方法模式,访问者模式

 

三:设计模式遵循的原则

1、开闭原则(Open Close Principle)

  对扩展开放,对修改关闭

2、里氏代换原则(Liskov Substitution Principle)

  只有当衍生类可以替换掉基类,软件单位的功能不受到影响时,基类才能真正被复用,而衍生类也能够在基类的基础上增加新的行为。

3、依赖倒转原则(Dependence Inversion Principle)

  这个是开闭原则的基础,对接口编程,依赖于抽象而不依赖于具体。

4、接口隔离原则(Interface Segregation Principle)

  使用多个隔离的借口来降低耦合度。

5、迪米特法则(最少知道原则)(Demeter Principle)

  一个实体应当尽量少的与其他实体之间发生相互作用,使得系统功能模块相对独立。

6、合成复用原则(Composite Reuse Principle)

  原则是尽量使用合成/聚合的方式,而不是使用继承。继承实际上破坏了类的封装性,超类的方法可能会被子类修改。

 

转载地址:https://blog.csdn.net/perfectnihil/article/details/91350218 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:设计模式系列(二)简单工厂模式与工厂方法模式
下一篇:InputManagerService系列(一) InputManagerService的初始化

发表评论

最新留言

网站不错 人气很旺了 加油
[***.192.178.218]2024年03月31日 17时06分25秒

关于作者

    喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!

推荐文章

C++_类和对象_对象特性_深拷贝与浅拷贝---C++语言工作笔记044 2019-04-26
AndroidStudio_java.util.ConcurrentModificationException---Android原生开发工作笔记237 2019-04-26
AndroidStudio_android中实现对properties文件的读写操作_不把properties文件放在assets文件夹中_支持读写---Android原生开发工作笔记238 2019-04-26
弹框没反应使用Looper解决_the caller should invoke Looper.prepare() and Looper.loop()---Android原生开发工作笔记239 2019-04-26
Command line is too long. Shorten command line for Application---微服务升级_SpringCloud Alibaba工作笔记0067 2019-04-26
AndroidStudio_android实现双击_3击_监听实现---Android原生开发工作笔记240 2019-04-26
C++_类和对象_对象特性_初始化列表---C++语言工作笔记045 2019-04-26
AndroidStudio安卓原生开发_UI高级_DrawerLayout_侧滑菜单控件---Android原生开发工作笔记120 2019-04-26
AndroidStudio安卓原生开发_UI高级_Shape的使用_虚线_直线_矩形_渐变_径向渐变_线性渐变_扫描渐变---Android原生开发工作笔记122 2019-04-26
AndroidStudio安卓原生开发_UI高级_StateListDrawable状态选择器_按钮按下和抬起显示不同颜色---Android原生开发工作笔记124 2019-04-26
kivy制作安卓APP--简单音乐播放器 2019-04-26
看完你就知道的乐观锁和悲观锁 2019-04-26
Docker入门 2019-04-26
Spring Aop 扫盲 2019-04-26
安卓开发入门教程-Fragment 2019-04-26
安卓自定义对话框(弹出框)并添加显示动画 2019-04-26
安卓开发入门教程-UI控件_ProgressBar 2019-04-26
安卓开发手电筒应用(打开或关闭闪光灯) 2019-04-26
安卓开发入门教程-UI控件_Switch 2019-04-26
安卓开发入门教程-Activity 2019-04-26